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

Angular项目中@nrwl/cli无法创建子作用域库问题求助

解决Nx创建带斜杠子作用域库的命名报错问题

看起来你遇到的是全局Nx CLI与项目本地Nx版本不匹配导致的命名校验冲突问题——虽然你升级了全局CLI,但很可能全局版本和项目依赖的本地版本不一致,而nx g lib简写命令会优先遵循全局CLI的规则,完整的schematics命令则直接调用本地项目的Nx逻辑,所以能正常工作。

下面是几个针对性的解决方案,按优先级尝试:

  • 优先使用项目本地的Nx命令
    不要直接用全局的nx命令,改用npx nx g lib bla/foo-bar。npx会自动调用项目node_modules里的本地Nx版本,完全绕开全局CLI的版本差异问题,这也是最快速解决的方法。

  • 对齐全局与本地Nx版本

    1. 先查看全局版本:nx --version
    2. 查看项目本地版本:npx nx --version
    3. 如果两者版本不一致,将全局CLI降级/升级到和本地一致的版本:
      sudo npm i -g @nrwl/cli@<你的本地版本号>
      
      比如本地版本是16.8.1,就执行sudo npm i -g @nrwl/cli@16.8.1
  • 清理npm缓存并重新安装全局CLI
    有时候缓存会导致版本不生效,执行以下步骤:

    npm cache clean --force
    sudo npm uninstall -g @nrwl/cli
    sudo npm i -g @nrwl/cli
    

    之后再尝试nx g lib bla/foo-bar

  • 重新安装项目依赖
    如果上述方法都不行,可能是项目依赖出现了损坏:

    1. 删除项目根目录的node_modules文件夹和package-lock.json(如果用yarn则删除yarn.lock)
    2. 执行npm install重新安装所有依赖
    3. 再用npx nx g lib bla/foo-bar尝试创建库

补充说明

你提到过去能正常创建、同事也没问题,核心原因就是他们的全局CLI版本和项目本地版本是匹配的,或者他们默认用的是本地Nx命令。而nx g lib的简写命令会优先读取全局CLI的命名校验规则,当全局版本和本地版本的规则不一致时,就会出现这种“明明应该可行却报错”的情况,而完整的@nrwl/angular:library命令是直接调用项目本地的schematics配置,所以不受影响。

内容的提问来源于stack exchange,提问作者Andresch Serj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:02:54