全局 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 help
、ng get/set
和 --global
选项、ng version
、ng doc
和 ng completion
。
在构建应用程序后使用 CLI 的本地安装。这样,当新版本的 CLI 可用时,您可以更新全局安装,而不会影响本地安装。这有利于项目的稳定性。大多数ng
命令只对本地版本有意义,例如lint
、build
和serve
等。
根据 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 版本大于本地版本的主要内容,如果未能解决你的问题,请参考以下文章