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

Posted

技术标签:

【中文标题】全局 Angular CLI 版本大于本地版本【英文标题】:Global Angular CLI version greater than local version 【发布时间】:2017-11-15 11:35:12 【问题描述】:

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

警告:

您的全局 Angular CLI 版本 (1.1.1) 高于本地版本 (1.0.6)。使用本地 Angular CLI 版本。

【问题讨论】:

谁能回答为什么我们需要本地和全球? 【参考方案1】:

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

如果您尝试在没有 CLI 本地安装(仅限全局安装)的应用程序上运行 ng serve,您将收到以下错误。

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

它还会打印此消息:

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

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

其他问题:看起来他们没有同步,但最好是他们这样做是为了避免工具出现任何异常行为,或与代码不一致工具生成。

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

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

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

可以从全局安装运行的其他命令有 ng helpng get/set--global 选项、ng versionng docng completion

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

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

【讨论】:

没有办法代替更新 cli,例如,我想用我现有的 cli 版本运行安装模块。或者执行命令时没有办法强制使用本地cli而不是全局cli?? 在 CLI 项目目录中运行命令时,默认使用 CLI 的本地版本。它在警告中说了很多。 但我不知道为什么这个解决方案不适合我。如果我在 package.json 中提到我的 angular-cli ="^1.0.6" 的值怎么办。那工作,但仍然不了解发生了什么? npm 卸载 -g @angular/cli,npm 缓存清除 --force,npm install @angular/cli @Doug 没错。为具有较低版本 CLI 的项目运行这些命令时,您会收到警告,但您可以忽略它。所有警告都是版本不同,将使用本地 CLI。【参考方案2】:

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

复制并运行这些命令

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

【讨论】:

我会添加步骤 1.5(如果你愿意的话)是:rm node_modules/.bin/ng。完美运行。 我们如何将它安装到特定版本?我的全球版本是 6.2.9,而我的本地版本是 1.7.5。我试过 npx @angular/cli@6 update @angular/cli@6 命令但没有运气 执行此操作后,我的 ng 服务不起作用,命令不执行,甚至不给我异常【参考方案3】:

这对我有用: 它会将本地版本更新到最新版本

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

验证版本

  ng --version

【讨论】:

我把它转换成一个老式的 Windoze 批处理命令: CALL npm uninstall --save-dev @angular/cli CALL npm install --save-dev @angular/cli@latest CALL npm install CALL ng --version 你的步骤。尝试ng serve --open 并得到“此版本的 CLI 仅与 Angular 5.0.0 或更高版本兼容。请访问下面的链接以查找有关如何更新 Angular 的说明。angular-update-guide.firebaseapp.com”【参考方案4】:

运行以下命令:npm install --save-dev @angular/cli@latest

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

Angular CLI 配置格式已更改,您的 现有配置可以通过运行自动更新 以下命令:ng update @angular/cli

【讨论】:

【参考方案5】:
npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest

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

ng update @angular/cli

或:

npm install

【讨论】:

【参考方案6】:

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

ng --version

上面的代码会显示全局和本地 angular-cli 版本是什么版本。

如果您希望全局和本地角度 cli 相同,您可以这样做

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

其中 1.7.4 是您的全局 angular-cli 版本

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

【讨论】:

【参考方案7】:

我的英语不太好

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

您想使用这个全局新版本而不是本地旧版本吗?

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

更多主题在页面上:https://docs.npmjs.com/cli/link

【讨论】:

【参考方案8】:
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 输入意外结束 以上步骤来自这篇帖子Can't update angular to version 6

【讨论】:

npm install --save-dev @angular-devkit/build-angular - 确实帮助 ng update @angular/cli -> 确实创建了 angular.json 和其他更新。【参考方案9】:

就我而言,我只是在项目中使用了这个命令:

ng update @angular/cli

【讨论】:

【参考方案10】:

npm install --save-dev @angular-devkit/build-angular - 确实帮助 ng update @angular/cli -> 确实创建了 angular.json 和其他更新。

正在收集已安装的依赖项... 找到 58 个依赖项。

 ** 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.

【讨论】:

【参考方案11】:

你只需要更新 AngularCli

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

【讨论】:

【参考方案12】:

更新工作区的 Angular CLI(本地)

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

注意:如果安装正确,请确保使用带有“-g”的命令安装全局版本。

npm install -g @angular/cli@latest

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

ng update

接下来为每个单独的 Angular 核心包运行如下更新命令

ng update @angular/cli @angular/core

但是,我必须另外添加“--force”和“--allow-dirty”标志命令来修复所有其他未决问题。

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

【讨论】:

【参考方案13】:

这应该可以解决问题:

ng update @angular/cli @angular/core

【讨论】:

【参考方案14】:

做这些事

npm install --save-dev @angular/cli@latest
npm audit fix
npm audit fix --force

【讨论】:

因为这个问题已经有将近 3 年的历史了,并且有 14 个现有答案,如果您解释了为什么您的答案没有被所有现有答案涵盖的价值,那么您的答案会更有价值。 【参考方案15】:

解决此全局和本地 Angular CLI 版本问题的两种方法。 1. 为两种环境保留一个特定的 angular-cli 版本。 2. 转到两种环境的最新 angular-cli 版本。

1.具体的angular-cli版本

首先,找出要在全局和本地环境中保留的 Angular 版本。

ng --version

例如:这里我们保留本地 Angular CLI 版本 8.3.27

所以,我们也必须在 8.3.27 上更改全局版本。 使用cmd>

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 

【讨论】:

【参考方案16】:

还有另一种方法可以避免全局安装创建新应用程序。 就我而言,我使用的是 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=.

【讨论】:

【参考方案17】:

这就是我修复它的方法。在Visual Studio Code的终端,先清理缓存

npm cache clean --force

然后更新cli

ng update @angular/cli

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

npm install

【讨论】:

【参考方案18】:

如果您升级了 Angular 版本,则需要更改版本

@angular-devkit/build-angular

在你的

package.json

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

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

在我的情况下,我发现版本需要是0.1001.7,所以我在我的package.json中将我的旧版本更改为这个版本并运行

npm --save install

这就够了。

【讨论】:

【参考方案19】:

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

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

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

npm audit fix

【讨论】:

【参考方案20】:

使用 --module 参数指定模块。例如,如果主模块是 app.module.ts,则运行:

ng g c new-component --module app

或者如果你在其他目录中,那么

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

【讨论】:

【参考方案21】:

如果您只想关闭此警告,请运行命令

ng config -g cli.warnings.versionMismatch false

这很有用,因为有时您希望拥有不同的本地和全球版本。例如,您的全局版本可能拥有最新的 Angular,因为您将在新项目中使用它,但必须在旧 Angular 版本中运行旧项目。

【讨论】:

【参考方案22】:

// 安装 npm 检查更新

npm i -g npm -check-updates

// 运行 npm-check-updates

npm -u

// 然后您应该获得所有要更新到最新版本的软件包的列表

//根据提示安装更新的包

npm install

【讨论】:

以上是关于全局 Angular CLI 版本大于本地版本的主要内容,如果未能解决你的问题,请参考以下文章

无法将角度更新到版本 6

无法确定“@angular/cli”本地安装的版本已损坏

如何将 Angular CLI 升级到最新版本

Angular --官方文档使用 Angular CLI创建项目

第一个 Angular 应用程序

如何在本地安装 Angular CLI(不带 -g 标志)