迁移至NX应用时无法使用Angular Core库的问题求助
解决NX中Buildable库导入Angular核心包的ESLint报错问题
问题原因
你的可构建库在导入@angular/core这类外部npm依赖时触发了@nx/enforce-module-boundaries规则——该规则默认会把非NX工作区内部的库判定为“非可构建库”,但外部npm包并不属于这个范畴,需要在规则配置里做特殊处理。
解决方案
修改项目根目录下的.eslintrc.json(或对应库的ESLint配置文件),通过配置@nx/enforce-module-boundaries规则来允许外部npm依赖的导入,以下是两种可行方法:
方法1:配置allowedExternalDependencies(推荐)
在ESLint配置的rules部分,给@nx/enforce-module-boundaries添加allowedExternalDependencies字段,列出需要允许的外部包:
{ "rules": { "@nx/enforce-module-boundaries": [ "error", { "enforceBuildableLibDependency": true, "allow": [], "depConstraints": [ { "sourceTag": "*", "onlyDependOnLibsWithTags": ["*"] } ], "allowedExternalDependencies": ["@angular/core", "@angular/common", "@angular/router"] } ] } }
方法2:在allow数组中添加包前缀
如果需要允许所有@angular/*开头的包,可以直接添加通配符:
{ "rules": { "@nx/enforce-module-boundaries": [ "error", { "enforceBuildableLibDependency": true, "allow": ["@angular/*"], "depConstraints": [ { "sourceTag": "*", "onlyDependOnLibsWithTags": ["*"] } ] } ] } }
验证
修改配置后,重启ESLint服务(或重新执行nx lint命令),导入@angular/core的代码就不会再触发报错了。
内容的提问来源于stack exchange,提问作者AngularGuru
相关产品推荐
相关产品推荐

