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

升级Angular/Nx 12至14后,Nx工作区生成Angular应用报错

解决Nx 14升级后生成Angular应用时的"Project does not exist"错误

排查方向及解决方法

1. 自定义组件生成器的API兼容性问题

从Nx 12到14,Schematics的项目上下文获取逻辑有明显变化。你的自定义组件生成器可能在应用生成流程中,过早尝试从工作区配置(angular.json/nx.json)中读取刚创建的项目——但此时新项目还未完成配置写入,导致找不到项目报错。

  • 检查自定义生成器代码,替换旧的工作区查询方式:
    原错误写法(依赖已写入的配置):
    const workspace = await getWorkspace(host);
    const project = workspace.projects[options.project]; // 新项目未写入时返回undefined
    
    改为Nx 14兼容的方式,直接使用传入的参数或官方API获取项目配置:
    import { getProjectConfiguration } from '@nrwl/devkit';
    // 通过Nx官方API获取项目配置,无需依赖已写入的文件
    const projectConfig = await getProjectConfiguration(host, options.project);
    

2. 自定义生成器的触发时机错误

Nx 14调整了应用生成器的执行顺序,如果你的自定义组件生成器通过@nrwl/angular:application的hooks提前触发,会在新项目完全注册前执行,导致找不到项目。

  • 先临时禁用自定义生成器,执行以下命令测试:
    npx nx g @nrwl/angular:application name-of-app
    
    如果能成功生成应用,就确认是自定义生成器的触发时机问题。
  • 调整自定义生成器的注册逻辑,确保在应用生成器完成项目配置写入后再执行组件生成。

3. 工作区配置文件损坏或缓存异常

升级过程中可能导致angular.json/nx.json格式异常,或Nx缓存残留旧数据,影响新项目注册。

  • 执行缓存清理:
    npx nx reset
    
  • 备份当前的angular.json和nx.json,对比全新Nx 14工作区的配置结构,修复现有文件中的异常(比如缺失的schema版本、项目模板配置项)。

4. Nx CLI版本不匹配

全局和本地Nx CLI版本不一致,会导致生成逻辑出现兼容性问题。

  • 检查版本:
    # 本地版本
    npx nx --version
    # 全局版本
    nx --version
    
  • 确保两者均为14.x版本,不一致则更新:
    # 更新全局版本
    npm install -g nx@14
    # 更新本地版本
    npm install nx@14 --save-dev
    

内容的提问来源于stack exchange,提问作者William Neely

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:50:37