You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nx从v11升级至v12.10.1迁移时出现Module not found错误

Nx v11升级v12.10.1报Cannot find module @nrwl/tao/src/utils/app-root修复方案

问题根因

这个报错是Nx跨大版本升级时非常常见的路径兼容问题:Nx v12.10.1调整了@nrwl/tao包的内部文件结构,原本存放在src/utils下的app-root工具方法修改了存放路径,但自动生成的迁移脚本没有同步更新引用路径;加上升级流程中提前删除了旧node_modules和lock文件,旧版本的路径缓存被完全清理,运行迁移脚本时就会直接抛出MODULE_NOT_FOUND错误。

注意:Nx v12.x与Angular 12最高兼容Node 16 LTS版本,你当前使用的Node v18.3.0版本过高,就算修复了当前的模块缺失问题,后续也大概率会触发OpenSSL兼容报错、依赖编译失败等问题,建议先将Node版本切换到16.x LTS再执行升级操作,避免额外踩坑。

修复步骤

  • 第一步:回退文件状态。找到第一次执行npx nx migrate 12.10.1时自动生成的package.json.bak备份文件,用它覆盖当前被修改的package.json,同时删除根目录下自动生成的migrations.json临时文件。
  • 第二步:恢复原始依赖环境。执行npm install重新安装Nx v11、Angular 11版本的全量依赖,保证当前工作区的nx命令可以正常运行。
  • 第三步:重新生成迁移配置。执行命令npx nx migrate 12.10.1重新生成升级配置与版本依赖清单,这一步完成后不要立刻删除node_modules和lock文件。
  • 第四步:提前安装匹配版本的tao依赖。执行命令npm install @nrwl/tao@12.10.1 --save-dev,先把对应版本的包安装到本地,避免路径引用缺失。
  • 第五步:手动修正迁移脚本的错误路径。打开根目录下新生成的migrations.json,全局搜索所有@nrwl/tao/src/utils/app-root字符串,统一替换为v12.10.1版本的实际路径@nrwl/tao/src/utils/app-root-path。
  • 第六步:重装依赖并执行迁移。先执行rm -rf node_modules package-lock.json清理旧依赖文件,再执行npm install安装所有升级后的版本依赖,最后执行npx nx migrate --run-migrations即可正常跑完所有迁移流程。

迁移后验证

迁移执行完成后,先执行npx nx --version确认输出版本号为12.10.1,再执行npx nx serve启动原有Angular项目,确认项目可以正常编译启动即升级完成。

内容的提问来源于stack exchange,提问作者milan pandya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:27:28