You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NX问题:存在同级库依赖时库构建失败

问题

我有一个NX单仓库工作区,开发了带分组文件夹的库"A",包含x、y、z三个领域特性,可通过nx build @A/x(替换x为其他子文件夹)单独构建。另外还有带分组文件夹的库"B"(包含r、s、t子文件夹),该库依赖于库"A"。

构建库"B"时,出现大量如下错误:

error TS6059: File '<my-project>/libs/<A-grouping-folder>/<x-folder>/src/lib/<some-file>' is not under 'rootDir' '<my-project>/libs/<B-grouping-folder>/<r-subfolder>/src'. 'rootDir' is expected to contain all source files.

当前tsconfig.base.json内容如下:

{
  "compileOnSave": false,
  "compilerOptions": {
    "rootDir": ".",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "module": "esnext",
    "lib": ["es2017", "dom"],
    "skipLibCheck": true,
    "skipDefaultLibCheck": true,
    "baseUrl": ".",
    "paths": {
      "@A/x": ["libs/A/x/src/index.ts"],
      "@A/y": ["libs/A/y/src/index.ts"],
      "@A/z": ["libs/A/z/src/index.ts"],
      "@B/r": ["libs/B/r/src/index.ts"],
      "@B/s": ["libs/B/s/src/index.ts"],
      "@B/t": ["libs/B/t/src/index.ts"]
    },
    "suppressImplicitAnyIndexErrors": true,
    "strictPropertyInitialization": false,
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "strictNullChecks": false,
    "noImplicitReturns": false
  },
  "exclude": ["node_modules", "tmp"]
}

工作区无angular.json和workspace.json,两个库的各自src/lib文件夹下都有project.json文件。想知道操作哪里有误,以及解决思路。

解决思路

  • 检查库B的project.json配置:重点查看build目标中的rootDir配置,大概率是库B的构建配置单独指定了rootDir为自身的src目录,导致TypeScript要求所有依赖文件都必须在该目录下。需将库B构建配置里的rootDir改为与根tsconfig.base.json一致的.,或者直接移除该配置,让它继承根配置。
  • 先构建依赖库A的所有特性:NX中依赖库需要先完成构建,依赖它的库才能引用编译后的产物而非源码。执行nx run-many --target=build --projects=@A/x,@A/y,@A/z构建所有A库的特性,之后再构建库B。
  • 检查库B子文件夹的tsconfig配置:如果库B的子文件夹下有独立的tsconfig.json,确认它是否正确继承了根tsconfig.base.json,且没有覆盖rootDir属性。正确的继承需在extends字段中指定对应路径,比如../../../../tsconfig.base.json(根据实际目录层级调整)。
  • 修正paths映射的语法问题:根tsconfig.base.json中paths最后一项末尾的多余逗号建议移除,虽然部分JSON解析器允许,但可能引发潜在的配置识别问题。

内容的提问来源于stack exchange,提问作者smartmouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:27:49