NRWL NX 导入库错误 TS2307:找不到模块“@eduboard/interfaces”

问题描述 投票:0回答:7

我刚刚创建了一个新的 NX 工作项目,并且为外部接口创建了一个库,以便将它们放在后端和前端。

编译时出现此错误

apps/askeddi/src/app/pages/global-admin/global-admin.component.ts(5,38): error TS2307: Cannot find module '@eduboard/interfaces'.

从我读到的所有内容来看,我没有做错任何事,但它要求一个模块,而它只是一个 index.ts 文件。

export * from './lib/user';
export * from './lib/global-admin-dashboard';

这是全局管理仪表板

interface Schools {
  total: number;
  active: number;
  usingAssessor: number;
}

interface TotalNActive {
  total: number;
  active: number;
}

export interface GlobalAdminDashboard {
  schools: Schools;
  schoolGroups: TotalNActive;
  users: TotalNActive;
}

angular angular7 nrwl nrwl-nx
7个回答
17
投票

我找到了如何解决我的问题。

因此,在

tsconfig.app.json
文件中,我将其添加到路径中。

"@eduboard/interfaces" : [
  "../../../libs/interfaces/src/index"
  ]

我不得不返回相当多的地方,因为我将它的

baseURL
设置为
src/


11
投票

您需要指定您的库的位置以便 TypeScript 定位。

将您的库添加到项目根目录下的

tsconfig.json
下的
"paths"
:

{
  "compilerOptions": {
    ...
    "paths": {
      "@package/my-lib": ["libs/my-lib/src/index.ts"]
    }
  }
}

您可能需要重新加载 VSCode 才能让 TypeScript 重新加载

tsconfig.json


5
投票

nx团队应该注意这个问题。当我尝试 nx.dev 网站上的教程时,我遇到了同样的问题。 我在其他线程上读到,如果删除 node_modules 文件夹并重新运行 npm install,问题就会消失。我尝试了一下并且成功了。真的很失望。

正如其他答案中提到的,我认为您不需要在使用该库的每个项目中指定路径。这破坏了 nx 提供的一些基本架构/优点。


0
投票

对于从 nx 6/7 升级到 8 或 9 的用户,您可能需要验证库的 angular.json 是否使用

"builder": "@nrwl/angular:package",
而不是
"builder": "@angular-devkit/build-ng-packagr:build",
。如果没有此更改,系统将尝试使用 angular-cli 构建器,该构建器不了解工作区的其余部分。


0
投票

我用chabu的想法修复了它,但我只做了一个

npm i
,而没有删除
node_modules
文件夹。


0
投票

我也遇到过类似的问题,我忘记写文件的“.ts”扩展名,而 VSCode 会自动将该文件解释为 TS 文件。

因此,就我而言,只需通过添加“.ts”来修复扩展文件即可解决我的问题。


-2
投票

请勿使用 NX 配置。只需删除

dist
node_modules
然后重新安装即可。我认为这是他们需要修复的错误

© www.soinside.com 2019 - 2024. All rights reserved.