我刚刚创建了一个新的 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;
}
我找到了如何解决我的问题。
因此,在
tsconfig.app.json
文件中,我将其添加到路径中。
"@eduboard/interfaces" : [
"../../../libs/interfaces/src/index"
]
我不得不返回相当多的地方,因为我将它的
baseURL
设置为 src/
您需要指定您的库的位置以便 TypeScript 定位。
将您的库添加到项目根目录下的
tsconfig.json
下的 "paths"
:
{
"compilerOptions": {
...
"paths": {
"@package/my-lib": ["libs/my-lib/src/index.ts"]
}
}
}
您可能需要重新加载 VSCode 才能让 TypeScript 重新加载
tsconfig.json
。
nx团队应该注意这个问题。当我尝试 nx.dev 网站上的教程时,我遇到了同样的问题。 我在其他线程上读到,如果删除 node_modules 文件夹并重新运行 npm install,问题就会消失。我尝试了一下并且成功了。真的很失望。
正如其他答案中提到的,我认为您不需要在使用该库的每个项目中指定路径。这破坏了 nx 提供的一些基本架构/优点。
对于从 nx 6/7 升级到 8 或 9 的用户,您可能需要验证库的 angular.json 是否使用
"builder": "@nrwl/angular:package",
而不是 "builder": "@angular-devkit/build-ng-packagr:build",
。如果没有此更改,系统将尝试使用 angular-cli 构建器,该构建器不了解工作区的其余部分。
我用chabu的想法修复了它,但我只做了一个
npm i
,而没有删除node_modules
文件夹。
我也遇到过类似的问题,我忘记写文件的“.ts”扩展名,而 VSCode 会自动将该文件解释为 TS 文件。
因此,就我而言,只需通过添加“.ts”来修复扩展文件即可解决我的问题。
请勿使用 NX 配置。只需删除
dist
和 node_modules
然后重新安装即可。我认为这是他们需要修复的错误