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

SCR*_*ATK 7 angular nrwl angular7 nrwl-nx

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

编译时出现此错误

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

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

export * from './lib/user';
export * from './lib/global-admin-dashboard';
Run Code Online (Sandbox Code Playgroud)

这是 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;
}

Run Code Online (Sandbox Code Playgroud)

Aci*_*dic 15

您需要指定 TypeScript 的库位置。

将您的库添加到tsconfig.json项目的根目录下"paths"

{
  "compilerOptions": {
    ...
    "paths": {
      "@package/my-lib": ["libs/my-lib/src/index.ts"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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


SCR*_*ATK 6

我发现了如何解决我的问题。

所以在tsconfig.app.json文件内部,我将它添加到路径中。

"@eduboard/interfaces" : [
  "../../../libs/interfaces/src/index"
  ]
Run Code Online (Sandbox Code Playgroud)

我不得不回去一些,因为我baseURL有一套src/


cha*_*abu 5

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

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

  • 另外,需要注意的是,这种情况仅发生在工作区库(打字稿数据库、非角度库等)中。 (3认同)