添加@nx/webpack插件致Nativescript构建失败,求解决方案
NX工作区@nx/webpack与Nativescript webpack冲突解决办法
问题背景
集成了Angular、Nativescript的NX工作区,添加Nest.js应用后自动安装了@nx/webpack插件并设为全局,导致Nativescript的@nativescript/webpack和它冲突,执行构建/启动时抛出以下错误:
NX Unable to create nodes for apps/nativescript-mobile-app/webpack.config.js using plugin @nx/webpack/plugin.
Inner Error: TypeError [ERR_INVALID_ARG_TYPE]: The "paths[1]" argument must be of type string. Received undefined
解决步骤
核心思路是取消@nx/webpack的全局插件地位,给需要它的应用单独配置,让Nativescript用自己的webpack插件。
- 调整全局插件配置
打开nx.json,找到plugins数组,删掉@nx/webpack/plugin这一项。只保留所有应用通用的全局插件(比如@nx/angular/plugin),不要让@nx/webpack全局生效。
- 调整全局插件配置
- 给Angular、Nest应用单独配置@nx/webpack
找到Angular和Nest应用对应的project.json文件(比如apps/your-angular-app/project.json、apps/your-nest-app/project.json),在文件里添加专属的插件配置:
{ "name": "your-nest-app", // 其他原有配置不变 "plugins": [ { "plugin": "@nx/webpack/plugin", "options": { "buildTarget": "your-nest-app:build" } } ] }这样只有这两个应用会调用@nx/webpack插件,不会影响Nativescript。
- 给Angular、Nest应用单独配置@nx/webpack
- 确认Nativescript的配置正确
检查Nativescript应用的project.json,确保它的构建目标用的是@nativescript/nx:build这类专属executor,而不是@nx/webpack的:
{ "targets": { "build": { "executor": "@nativescript/nx:build", // 其他配置不变 } } }- 确认Nativescript的配置正确
- 清理缓存测试
运行nx reset清空NX缓存,然后分别测试各个应用的启动/构建:
nx serve your-angular-app nx serve your-nest-app nx run your-nativescript-app:build- 清理缓存测试
补充说明
NX支持应用级插件配置,全局插件适合所有应用通用的工具,而不同技术栈的专属插件可以单独给对应应用配置,完美解决这类跨技术栈的插件冲突问题。
内容的提问来源于stack exchange,提问作者rthames62
相关产品推荐
相关产品推荐

