Angular `更新@angular/...` returns `401 未经授权`

Angular `ng update @angular/...` returns `401 Unauthorized`

npm -v returns 6.0.0

node -v returns v10.0.0

Angular CLI 本地和全球版本为 6.0.0

我用 ng new sample、运行 npm install 创建了一个没有问题的新包,然后我尝试 ng update @angular/coreng update @angular/cli 并得到 401 Unauthorized 作为回应。

尝试 运行 更新已经 Angular 6 的存储库似乎是多余的,但我也遇到了 Angular 5 存储库的这个问题。

对于这个错误,我没有太多可以继续的,它是专门与 ng update 相关的,还是更可能是它之外的一些不相关的配置?

碰巧,您尝试更新时 运行 是应用程序吗? 我遇到了同样的问题,并且在停止应用程序进程并在全局安装最新的 cli 后能够从 5.29 更新到 6.0.0。

我一直在为同样的错误信息而苦苦挣扎。对我来说,这是由项目目录中的自定义 .npmrc 引起的,其中包含有关如何连接到我们的 npm 注册表的信息。

我是这样解决的:

  1. 在更新过程中删除了文件 (mv .npmrc backup.npmrc)
  2. package.json
  3. 的内部 npm 注册表中删除了对工件的所有依赖项
  4. 运行 ng update @angular/cli
  5. 将文件移回原来的位置mv backup.npmrc .npmrc
  6. 运行 npm install(只是为了确定)

我还在 https://github.com/angular/angular-cli/issues/10704

创建了一个 angular-cli 问题

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

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

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

纱线:

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 中的依赖项中删除有问题的包,然后重试。

在尝试其他任何事情之前,请转到 Artifactory UI 主页 并在 Set Me Up 小部件中滚动到 npm repo you在 .npmrc 中提供 registry。单击它,然后在弹出窗口中输入您的密码以生成配置并复制并粘贴 authusernameemail 注册表 。 Auth 与您预期的不同(它不是用户配置文件中的 API 密钥,也不是某些来源建议的加密密码)。这给我带来了很多问题,直到我找到在 Artifactory UI 中生成配置的方法。 顺便说一句: