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”的主要内容,如果未能解决你的问题,请参考以下文章

禁止在 Nrwl Nx 的同一库中导入桶文件

TS2307:找不到模块“./images/logo.png”

Angular 2:错误 TS2307:找不到模块“socket.io-client”

创建新应用程序和库时出现@nrwl/nx 错误

如何从库中导入组件(在 nrwl/nx 中使用 Angular)

TypeScript + moment.js:错误 TS2307:找不到模块'moment'