Angular CLI的全局版本大于本地版本

当运行ng serve时,我得到这个关于我的全局CLI版本大于我的本地版本的警告。我没有注意到这个警告有任何问题,但我想知道两个版本是否应该同步?另外,如果你有一个全局版本,是否有必要有一个本地版本?

警告:

你的Angular CLI全局版本(1.1.1)比你的本地版本(1.0.6)更高。使用的是Angular CLI的本地版本。

633024 次浏览

要回答其中一个问题,必须同时进行全局和本地安装,以便工具能够工作。

如果你试图在没有CLI的本地安装(仅全局安装)的应用程序上运行ng serve,你会得到以下错误。

你必须在Angular CLI项目中才能使用serve命令。

它还将打印以下消息:

Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"

运行npm命令在本地更新命令行,并避免您所得到的警告。

其他问题:看起来它们并没有同步,但是为了避免工具的任何异常行为,或者与工具生成的代码的任何不一致,它们可能是最好的。

为什么我们同时需要全局安装和本地安装?

启动新应用程序需要全局安装。ng new <app-name>命令是在CLI全局安装时执行的。事实上,如果你试图在现有CLI应用程序的文件夹结构中运行ng new,你会得到这个可爱的错误:

你不能在Angular CLI项目中使用new命令。

其他可以在全局安装中运行的命令有ng help、带有--global选项的ng get/setng versionng docng completion

CLI的本地安装是在构建应用程序之后使用的。这样,当CLI的新版本可用时,您可以更新全局安装,而不会影响本地安装。这有利于项目的稳定性。大多数ng命令只适用于本地版本,如lintbuildserve等。

根据CLI GitHub 自述,要更新CLI,必须更新全局和本地包。但是,到目前为止,我已经使用了CLI,其中全局和本地版本不同,没有任何问题。如果我遇到过与全局和本地CLI版本不同步相关的错误,我会在这里发布。

这就是我解决问题的方法。

在本地安装最新的Angular CLI包

复制并运行这些命令

ng --version
npm install --save-dev @angular/cli@latest
ng --version
这对我来说很有用: 它将更新本地版本到最新

npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest
npm install

验证版本

  ng --version

npm install --save-dev @angular/cli@latest .执行以下命令

运行上述命令后,控制台可能会弹出下面的消息

Angular CLI的配置格式已经改变,并且您的 命令可以自动更新现有配置 ng update @angular/cli

.使用实例
npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest

执行以下命令可自动更新您的现有配置:

ng update @angular/cli

或者:

npm install

首先通过运行找到angular-cli的全局版本

ng --version

上面的代码将显示angular-cli的全局版本和本地版本。

如果你想要全局和局部的angular cli是一样的,你可以这样做

npm install --save-dev @angular/cli@1.7.4

你的angular-cli的全局版本是1.7.4

然后如果你运行ng serve --open,你的代码应该运行。

我英语说得不流利

但如果我理解了这个问题,是不是项目的本地CLI版本比全局CLI版本要旧?

您想使用全局更新而不是本地旧的吗?

如果是,在项目目录npm link @angular/cli中运行一个非常简单的方法就足够了

本页主题中的更多内容:https://docs.npmjs.com/cli/link

npm uninstall -g @angular/cli
npm cache verify
npm install -g @angular/cli@latest

然后在本地项目包中:

rm -rf node_modules dist
npm install --save-dev @angular/cli@latest
npm i
ng update @angular/cli
ng update @angular/core
npm install --save-dev @angular-devkit/build-angular

正在低于错误 错误:JSON输入意外结束 JSON输入意外结束 以上步骤有助于本文不能将angular更新到版本6

在我的情况下,我只是在项目中使用了这个命令:

ng update @angular/cli

NPM install——save-dev @angular-devkit/build-angular - did帮助ng更新了@angular/cli -> did创建了angular。Json和其他更新。

收集已安装的依赖项…

 ** Executing migrations for package '@angular/cli' **
Updating karma configuration
Updating configuration
Removing old config file (.angular-cli.json)
Writing config file (angular.json)
Some configuration options have been changed, please make sure to update any  npm scripts which you may have modified. DELETE .angular-cli.json CREATE angular.json (4394 bytes) CREATE browserslist (429 bytes) UPDATE karma.conf.js (993 bytes) UPDATE public/tsconfig.spec.json (295 bytes) UPDATE package.json (2618 bytes) UPDATE tsconfig.json (437 bytes) UPDATE tslint.json (3135 bytes) UPDATE public/polyfills.ts (587 bytes) UPDATE public/tsconfig.app.json (199 bytes) npm WARN @angular/core@5.2.9 requires a peer of zone.js@^0.8.4 but none is installed. You must install peer dependencies yourself.

你只需要更新AngularCli

npm install --save-dev @angular/cli@latest

更新Angular CLI的工作区(Local)

npm install --save-dev @angular/cli@latest

注意:如果安装正确,请确保使用' -g '命令安装全局版本

npm install -g @angular/cli@latest

运行Update命令获取需要升级的所有依赖项的列表

ng update

对每个Angular核心包运行update命令,如下所示

ng update @angular/cli @angular/core

然而,我不得不添加' -force '和' -allow-dirty '标志来解决所有其他悬而未决的问题

ng update @angular/cli @angular/core --allow-dirty --force

这应该可以解决问题:

ng update @angular/cli @angular/core

做这些事

npm install --save-dev @angular/cli@latest
npm audit fix
npm audit fix --force
解决全局和局部angular CLI版本问题的两种方法 1. 为这两个环境保留一个特定的angular-cli版本 2. 转到这两个环境的最新angular-cli版本

1. angular-cli的特定版本

首先,找出你想在全局和局部环境中保留的angular版本。

ng --version

例如:在这里我们保持本地angular CLI版本8.3.27

所以,我们必须在8.3.27更改全局版本。 使用cmd > < / p >
npm install --save-dev @angular/cli@8.3.27 -g

在这里,'-g'标志用于设置angular-cli的全局版本。

2. 转到两种CLI环境下的最新angular版本。

npm install --save-dev @angular/cli@latest -g
npm install --save-dev @angular/cli@latest
还有另一种方法可以避免全局安装到创建一个新的应用程序。 在我的例子中,我使用的是Angular 9,但客户要求使用Angular 8
# create an empty directories
mkdir angular-8-cli
mkdir my-angular-8-project


# init empty npm project
cd angular-8-cli
npm init -y


# install local angular 8 cli
npm i @angular/cli@8


# go to your angular 8 project
cd ../my-angular-8-project


# use previously installed angular 8 cli to create a new angular 8 project
../angular-8-cli/node_modules/.bin/ng new my-angular-8-project --directory=.

这就是我解决它的方法。在Visual Studio Code的终端,第一个缓存清理

npm cache clean --force

然后更新cli

ng update @angular/cli

如果在此之后缺少任何模块,使用下面的命令

npm install

如果你升级了你的Angular版本,你需要改变Angular的版本

@angular-devkit/build-angular

在你

package.json

从旧版本升级到新的angular构建版本。

我已经升级到Angular 10,所以我需要转到 https://www.npmjs.com/package/@angular-devkit/build-angular 并根据Angular 10检查哪个是我的版本

在我的例子中,我发现这个版本需要是0.1001.7,所以我在我的包中把我的旧版本改为这个版本。Json,然后运行

npm --save install

这就够了。

这是因为全局角版本和局部角版本不同。要更新全局angular版本,首先你需要在命令提示符或vs code终端运行以下命令

npm install --save-dev @angular/cli@latest

之后,如果发现任何漏洞,则运行以下命令来修复它们

npm audit fix

使用——module参数指定模块。例如,如果主模块是app.module。Ts,运行这个:

ng g c new-component --module app

或者如果你在另一个目录

ng g c component-name --module ../

如果您只是希望关闭此警告,请运行该命令

ng config -g cli.warnings.versionMismatch false

这很有用,因为有时你想要不同的本地&全球版本。例如,你的全局版本可能有最新的Angular,因为你将在新项目中使用它,但必须在较旧的Angular版本中运行旧项目。

//安装NPM检查更新

npm i -g npm -check-updates

//执行npm-check-updates

npm -u

//你应该得到一个列表,上面是所有要更新到最新版本的包

//按照提示安装更新后的包

npm install
当你在你的项目中使用Angular框架时,它有两个不同的版本:一个是全局Angular版本,一个是本地Angular版本,直接安装在你的项目中。这两个版本之间的差异解释了为什么会显示错误信息“全局Angular CLI版本大于本地版本”。你必须理解这两个版本之间的区别,然后才能解决这个问题。 可以通过执行命令

NPM install——save-dev @angular/cli@latest

npm install --save-dev @angular/cli@latest

我这样做了,而且成功了

NPM ng install /config——save-dev -dev @angular/cli@latest @angular-devkit/build-angular -global -g @angular/cli@latest

  • ng版本

NPM install——save-dev @angular/cli@latest

  • 关闭 命令提示符并重新打开

  • < p > ng版本

  • 如果你的PowerShell不识别ng命令,在你的powershell运行这个命令:

Set-ExecutionPolicy -scope currentuser -executionpolicy remotessigned