NX Angular项目生产构建报错TS6059:文件不在rootDir下
NX Monorepo Angular生产构建报错TS6059:文件不在rootDir下
问题描述
本地serve运行一切正常,但执行生产构建时出现大量如下错误:
libs/data/persistance/firebase/src/lib/data-persistance-firebase.module.ts:1:1 - error TS6059: File 'C:/Users/jorda/source/repos/ng-firebase/firebase-demo/libs/data/persistance/firebase/src/lib/data-persistance-firebase.module.ngtypecheck.ts' is not under 'rootDir' 'C:\Users\jorda\source\repos\ng-firebase\firebase-demo\libs\data\state\auth\src'. 'rootDir' is expected to contain all source files.
已确认工作区根目录tsconfig.base.json的paths配置正常,所有跨库导入均使用@fba/...语法,各库也配置了build目标及相关配置文件。尝试过移除tsconfig.base中的rootDir: "."、清理缓存、重装依赖、更新包、检查重复paths、排除循环依赖等操作,问题仍未解决。
可能原因及排查步骤
1. 单个库的tsconfig配置异常
进入libs/data/state/auth/tsconfig.json,检查以下配置:
- 确认
rootDir设置为"./src",而非其他路径 - 确认
include数组仅包含"src/**/*",不要包含其他库的文件路径 - 确认
exclude数组包含"node_modules"、"dist"以及其他库的目录,避免编译器误处理跨库文件
2. NX项目build目标配置错误
查看libs/data/state/auth/project.json的build目标配置:
- 检查
options.tsConfig是否正确指向当前库的tsconfig.json(比如libs/data/state/auth/tsconfig.json) - 确认
assets、files字段没有包含其他库的文件内容 - 检查
dependencies或peerDependencies是否正确声明了依赖的其他库,避免构建时错误关联无关文件
3. 清理NX全局缓存
执行以下命令彻底清理NX的所有缓存(包括自动生成的类型检查文件):
npx nx reset
清理完成后重新执行生产构建命令。
4. 检查库的导出范围
确认@fba/data/state/auth/src/index.ts仅导出当前库的模块/组件,不要直接导入并导出@fba/data/persistance/firebase的内容(除非是合理的依赖,但必须确保依赖通过paths正确引用,且在project.json中声明了依赖关系)。
5. 验证ng-package.json配置
检查每个库的ng-package.json:
- 确认
lib.entryFile为"src/index.ts" - 确认
dest路径指向工作区的dist目录下对应库的子文件夹,避免不同库的输出路径冲突
6. 检查构建命令的目标范围
如果执行的是单个库的构建(比如nx build auth),确认命令没有误将其他库的文件纳入构建范围;如果是全工作区构建,检查各库的build目标是否独立配置,没有交叉引用错误。
内容的提问来源于stack exchange,提问作者J King
相关产品推荐
相关产品推荐

