NRWL NX 导入库错误 TS2307:找不到模块“@eduboard/interfaces”
Posted
技术标签:
【中文标题】NRWL NX 导入库错误 TS2307:找不到模块“@eduboard/interfaces”【英文标题】:NRWL NX importing lib error TS2307: Cannot find module '@eduboard/interfaces' 【发布时间】:2019-10-29 09:20:45 【问题描述】:我刚刚为工作创建了一个新的 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.json 文件中是否有路径条目? 是的。这就是为什么我真的很困惑 可能是模板中有一个空的接口文件,我的 nx 项目就是这种情况。只需查看您的库中的 index.ts 并删除所有不必要的内容,包括空文件。 检查,没有一个是空的,仍然没有模块 【参考方案1】:我找到了解决问题的方法。
所以在tsconfig.app.json
文件中,我将其添加到路径中。
"@eduboard/interfaces" : [
"../../../libs/interfaces/src/index"
]
我不得不返回一些,因为我将 baseURL
设置为 src/
【讨论】:
谢谢,为我解决了这个问题。自动生成的路径不是相对路径。 在本地 tsconfig.json 中覆盖 baseURL 意味着它不起作用——但这修复了它。谢谢!【参考方案2】:nx 团队应该注意这个问题。当我在 nx.dev 网站上尝试教程时,我遇到了同样的问题。 我在其他线程上读到,如果您删除 node_modules 文件夹并重新运行 npm install,问题就会消失。我试过了,它奏效了。真是令人失望。
正如另一个答案中提到的,我认为您不需要在使用该库的每个项目中指定路径。这破坏了 nx 提供的一些基本架构/优势。
【讨论】:
是的,我没有遇到删除 node_modules 文件的修复方法。否则,我会这样做。 另外,需要注意的是,这只发生在工作区库(打字稿数据库、非角度库等)。 我尝试了您的解决方案,但截至 2021 年 11 月仍未奏效【参考方案3】:对于从 nx 6/7 升级到 8 或 9 的用户,您可能需要验证您的 angular.json 库使用的是 "builder": "@nrwl/angular:package",
而不是 "builder": "@angular-devkit/build-ng-packagr:build",
。如果不进行此更改,系统将尝试使用不了解工作区其余部分的 angular-cli 构建器。
【讨论】:
【参考方案4】:您需要指定库的位置以便 TypeScript 定位。
将您的库添加到项目根目录下的tsconfig.json
"paths"
:
"compilerOptions":
...
"paths":
"@package/my-lib": ["libs/my-lib/src/index.ts"]
您可能需要重新加载 VSCode 才能让 TypeScript 重新加载 tsconfig.json
。
【讨论】:
我不知道为什么你的回答被否决了。它帮助了我。我添加了几个不同地方的路径,直到我创建了一个新的 tsconfig.json 文件并让它扩展了 tsonconfig.base.json 我很高兴它至少可以帮助你:)以上是关于NRWL NX 导入库错误 TS2307:找不到模块“@eduboard/interfaces”的主要内容,如果未能解决你的问题,请参考以下文章
TS2307:找不到模块“./images/logo.png”
Angular 2:错误 TS2307:找不到模块“socket.io-client”