[英]Nx - 'Unable to write a reference...' error when using run-commands builder
我在构建一个依赖于同一 Nx 工作区中的另一个库的库时遇到了一个特殊错误。 我正在使用运行命令构建器,因为在初始库构建之后需要调用其他一些任务。
我看到“无法编写参考...”类型错误消息,例如
Unable to write a reference to SomethingCoolComponent in /Users/robert.parker/Documents/Github/nx-playground/libs/common-components/src/lib/components/something-cool/something-cool.component.ts from /Users/robert.parker/Documents/Github/nx-playground/libs/common-components/src/lib/common-components.module.ts
ERROR: Something went wrong in @nrwl/run-commands - Command failed: nx base-build shiny-components
我有一个可复制的仓库,我可以在这里展示https://github.com/parky128/nx-playground使用几个最小的库,两者之间存在依赖关系。
安装依赖项后,只需运行ng run shiny-components:build
并查看发出的错误。
如果我不使用run-commands
构建器,而只是在同一个库上运行ng run shiny-components:base-build
任务,它构建得很好,所以我责怪 run-commands 但我不确定它为什么会中断。
我已经看到与同一问题相关的这个答案,尽管他们似乎没有使用运行命令并且对他们来说归结为路径导入问题,但我认为这不是我的问题的原因。
这里的问题是您引入了一个全新的目标名称base-build
,而 nx 不知道如何构建。
有两个问题:
nx 无法构建正确的依赖关系图https://github.com/nrwl/nx/blob/75e6b125351ca828021302b8aef838709be3d579/packages/workspace/src/tasks-runner/utils.ts#L26-L52
nx 无法为依赖库 https 正确准备tsconfig.compilerOptions.paths
://github.com/nrwl/nx/blob/1139c616e1b7e27c519e385a3982ac8b486dbb0f/packages/workspace/src/utilities/buildable-libs-util#L11
幸运的是,您可以正确配置工作区:
更新targetDependencies
中的nx.json
选项:
"targetDependencies": { "build": [ { "target": "build", "projects": "dependencies" } ], "base-build": [ <== add this { "target": "base-build", "projects": "dependencies" } ] },
为angular.json
中的 common-components 重命名或引入相同的目标名称:
"common-components": { "projectType": "library", "root": "libs/common-components", "sourceRoot": "libs/common-components/src", "prefix": "rob", "architect": { "base-build": { <========================= this line "builder": "@nrwl/angular:package", "outputs": ["dist/libs/common-components"],
我认为还有更好的方法:不要重命名常见目标( build
、 lint
、 test
等) ,而是只重命名您的自定义目标
angular.json
"build-with-task": {
"builder": "@nrwl/workspace:run-commands",
"options": {
"commands": [
"nx build shiny-components",
"echo done"
],
现在,您应该能够运行以下命令之一:
ng run shiny-components:build
ng run shiny-components:build-with-task
这是您的 repo https://github.com/parky128/nx-playground/pull/1/files的最终 PR
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.