Angular CLI 版本与 Angular 版本不兼容

Angular CLI version is not compatible with Angular version

我的 angular 项目 运行 很好,但是当我将 Angular 更新到版本 9 时,它开始给我这个错误:

This version of CLI is only compatible with Angular versions 0.0.0 || ^10.0.0-beta || >=10.0.0 <11.0.0,
but Angular version 9.1.1 was found instead.

我更新了 CLI,但它仍然给我同样的错误。

我的 CLI 版本是:

Angular CLI: 10.0.0-next.0
Node: 12.13.0
OS: win32 x64

Angular: 9.1.1
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

问题

您安装的 CLI 版本不符合您的 Angular 版本的要求,如错误所述:

This version of CLI is only compatible with Angular versions 0.0.0 || ^10.0.0-beta || >=10.0.0 <11.0.0

修复

卸载 @angular/cli 并确保安装 9.1.x 版本范围内的 @angular/cli,以便它符合 Angular 9.1 版本的要求。

Angular: 9.1.1
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

更新Angular项目

要在您的应用程序中卸载并重新安装 @angular/cli 包,请导航到项目的根文件夹,然后 运行 以下内容:

# uninstall previous version
npm uninstall @angular/cli --save-dev

# install 9.1.x specific version
npm install @angular/cli@~9.1.0 --save-dev

The --save-dev parameter will update your package.json devDependencies

更新全局依赖

如果你全局安装了angular/cli,需要在命令末尾加上-g并省略--save-dev参数:

# uninstall previous globally installed version
npm uninstall @angular/cli -g

# install 9.1.x specific version globally
npm install @angular/cli@~9.1.0 -g

If you are not sure what global version is installed (or if you have installed @angular/cli globally) you can run the following command to list your globally installed NPM packages:

npm ls -g --depth=0

如果需要,您可以更新项目。

在根项目文件夹中写入:

ng update @angular/core @angular/cli

这将使用安装在“node_modules”文件夹中的模块版本升级 package.json 文件。

有具体的更新说明,具体取决于 from/to 您要更新的版本。为此,请访问 Angular update guide

访问https://update.angular.io/ 将 angular 版本的详细信息输入目标 angular 版本,这将更新 cli 以及项目文件。 只需将 cmd 复制粘贴到终端即可。

不过,如果您看到一些奇怪的错误,请检查 node_modules 文件夹是否存在,如果存在则将其删除,然后 运行 - npm install 这可能仅在您拥有 package.json 文件时才有效。 如果仍然出现错误,请查看错误内容,从 package.json 中删除错误行,如果有效再试一次。