Angular中执行`ng update @angular/...`时出现“401 Unauthorized”的错误提示。

7

npm -v 返回 6.0.0

node -v 返回 v10.0.0

Angular CLI本地和全局版本均为 6.0.0

我使用 ng new sample 创建了一个新的包,并且成功执行了 npm install,但是当我尝试运行 ng update @angular/core 或者 ng update @angular/cli 时,返回的是 401 Unauthorized

在已经安装了 Angular 6 的仓库中尝试进行更新似乎是多余的,但是我在一个 Angular 5 的仓库中也遇到了同样的问题。

ng5-sample git:(ng6) ✗ ng update @angular/core, 401 Unauthorized

从这个错误信息中我并没有找到足够的线索,这个问题是否与 ng update 有关还是出现在它之外的某些配置上呢?


你之前更新过 @angular/cli 并成功了吗?(适用于 Angular 5 应用程序) - David
我记得在 Angular 5 应用程序中至少一次运行 ng update @angular/cli 没有遇到问题,实际上成功升级到 CLI 版本 6.0.0,但是当我转到 @angular/core 时出现了这种情况。 - MattTreichel
全局和本地版本现在都是6.0.0。 - MattTreichel
1
在尝试遵循https://update.angular.io/从angular 5.2升级到6.0.0时遇到了相同的问题...运行于Windows Node 9.8.0和NPM 5.6.0。 - Korgen
5个回答

20

我也曾遇到同样的错误信息。对我来说,这是由于项目目录中一个自定义的 .npmrc 文件引起的,其中包含有关如何连接到我们的 npm 注册表的信息。

以下是我的解决方法:

  1. 在更新期间删除该文件 (mv .npmrc backup.npmrc)
  2. package.json 中删除与我们内部 npm 注册表相关的所有依赖项
  3. 运行 ng update @angular/cli
  4. 将文件移回原位置 mv backup.npmrc .npmrc
  5. 运行 npm install (只是为了确保)

我还在 https://github.com/angular/angular-cli/issues/10704 上创建了一个 angular-cli 问题。


对我来说很有效,而且节省了我大量手动操作的时间!谢谢 - FrisoD
工作正常。我首先需要将注册表设置为默认的npm注册表,而不是我的私有注册表。谢谢。 - Alejandro Morán

2
如已接受的答案所示,此问题源于在配置中某处定义了自定义注册表。可以通过 .rc 文件(例如 .yarnrc 或 .npmrc)或使用 npm config set registry 或 yarn config set :registry 直接设置。您无需撤消这些注册表配置即可解决问题!ng update 命令将以注册表 URL 作为参数。但是,您必须删除任何依赖于自定义注册表的软件包的引用。不要担心,命令会告诉您哪些软件包有问题,只需像这样运行命令:

yarn:

ng update @angular/cli @angular/core --registry https://registry.yarnpkg.com

npm:

ng update @angular/cli @angular/core --registry https://registry.npmjs.org

应该会产生以下错误: Not found : @fortawesome/fontawesome-pro

然后,您可以在 package.json 中暂时删除有问题的软件包并重试。


0

你是在运行应用程序时尝试更新的吗?我曾经遇到过同样的问题,但在停止应用程序进程并全局安装最新的cli后,成功将版本从5.29更新到6.0.0。


嗯,好像不是这个问题。今天早上出现了一点行为上的差异,它只是挂起来了,而不是显示“401未经授权”,但不确定是否相关。 - MattTreichel

0

在尝试其他任何操作之前,请转到Artifactory UI Home,并在Set Me Up小部件中滚动到您为.npmrc中的registry提供的npm repo。单击它,然后在弹出窗口中输入密码以生成配置,并复制&粘贴包含authusernameemailregistry的部分。Auth与您预期的不同(它不是用户配置文件中的API密钥,也不是一些来源建议的加密密码)。在我找到在Artifactory UI中生成配置的方法之前,这给我带来了许多问题。 顺便说一下:


0

我曾经遇到过同样的问题。这是我解决它的方法。

npm i -g @angular/cli@latest
ng update
ng update --all

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接