NX升级后生成@nrwl/nest库报project.json与v1工作区schema不兼容
故障现象
按照Nx官方流程升级仓库内Nx与Angular版本后,绝大多数功能异常,执行@nrwl/nest library生成器时抛出如下错误:
> NX 'project.json' files are incompatible with version 1 workspace schemas. Error: 'project.json' files are incompatible with version 1 workspace schemas. at D:\projects\jafar-tech\node_modules\nx\src\config\workspaces.js:322:19 at Array.forEach (<anonymous>) at toOldFormatOrNull (D:\projects\jafar-tech\node_modules\nx\src\config\workspaces.js:320:37) at reformattedWorkspaceJsonOrNull (D:\projects\jafar-tech\node_modules\nx\src\config\workspaces.js:277:68) at addProjectToWorkspaceJson (D:\projects\jafar-tech\node_modules\nx\src\generators\utils\project-configuration.js:248:112) at setProjectConfiguration (D:\projects\jafar-tech\node_modules\nx\src\generators\utils\project-configuration.js:205:5) at addProjectConfiguration (D:\projects\jafar-tech\node_modules\nx\src\generators\utils\project-configuration.js:22:5) at addProject (D:\projects\jafar-tech\node_modules\@nrwl\js\src\generators\library\library.js:87:46) at D:\projects\jafar-tech\node_modules\@nrwl\js\src\generators\library\library.js:26:9 at Generator.next (<anonymous>)
根因分析
该问题属于Nx跨版本升级后的配置格式不兼容问题:
- 升级后的Nx版本使用v2及以上版本的工作区Schema规范,但迁移流程未完整执行,仓库内存在新旧配置格式混存的情况
- 根工作区配置或项目级
project.json文件残留v1版本标识字段,Nx执行生成器写入新配置时触发格式校验失败 - 跨3个及以上主版本升级时,该问题出现概率极高,通常伴随其他Nx内置命令执行异常。
修复方案
按顺序执行以下操作:
- 首先执行迁移收尾命令,自动补全未跑完的配置迁移逻辑,执行前确保
package.json中所有Nx相关依赖版本已经对齐到目标升级版本nx migrate --run-migrations - 命令执行完成后删除Nx本地缓存
nx reset - 若仍报错,手动检查配置文件:
- 打开根目录
nx.json,删除顶层"version": 1字段(如果存在),移除文件内残留的旧版嵌套格式projects路径映射配置 - 遍历仓库内所有项目的
project.json文件,删除每个文件顶层的"version": 1字段,将残留的旧版architect配置字段统一替换为targets
- 打开根目录
- 执行依赖图生成命令校验配置合法性
若命令能正常加载全量项目依赖关系,说明配置已修复,重新执行nest库生成命令即可正常运行。nx graph
避坑说明
- Nx大版本升级不要直接跨超过2个主版本,建议逐版本升级,每升级一个版本跑完所有迁移脚本、验证功能正常后再升级下一个版本,避免配置迁移遗漏
- 升级操作前必须提交本地所有代码,方便配置改乱时快速回滚
- 所有Nx生态相关依赖(
@nrwl/*、nx、@nx/*)版本必须完全对齐,不能出现版本号不一致的情况。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

