我正在尝试连接到Azure DevOps Artifacts提要,但是我一直收到E401错误。
我在另一台计算机上尝试过,并且连接正常。我已经卸载,然后重新安装了Node.js,但仍然出现错误。
以下是我在运行“ npm install”时遇到的错误
npm ERR! code E401
npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/*********, Basic realm="https://pkgsprodcus1.pkgs.visualstudio.com/", TFS-Federated
以下是添加到.npmrc文件中的内容
registry=https://[org].pkgs.visualstudio.com/_packaging/[feed].Npm/npm/registry
//pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/registry/:_authToken=[token]
//pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/:_authToken=[token]
在将我的信息添加到.npmrc文件并运行'npm install'后,我希望能够连接到供稿
答案 0 :(得分:8)
这通常在您最近更改密码时发生。为了解决这个问题,我在VS Code的Powershell终端中运行了此命令(任何终端都可以使用)
vsts-npm-auth -config .npmrc
这样做,会弹出一个GUI,我可以在其中选择我想用来进行身份验证的帐户。
我希望这会有所帮助!
答案 1 :(得分:5)
即使我与同一台计算机上的其他存储库具有相同的.npmrc,我也遇到了无法连接的问题。
刚退出运行vsts-npm-auth -config .npmrc
,大概对缓存的凭据感到满意。
但是,它的凭据似乎很糟糕。解决方案是强制刷新令牌:
vsts-npm-auth -config .npmrc -force
答案 2 :(得分:2)
我刚刚通过Azure DevOps门户体验了这一陷阱:
我的一位同事无法连接。事实证明,如果像在MS Teams上共享源URL一样在浏览器中复制源URL,则Azure DevOps门户会在源名称后插入文本%40Local
。
我的门户网站显示的内容:
; begin auth token
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
他的门户网站显示的内容:
; begin auth token
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:username=xxx
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<company>/_packaging/<feed>%40Local/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
这导致与项目.npmrc
中的存储库URL不匹配
要解决此问题,请执行以下操作:确保URL正确并且在用户.npmrc
和项目.npmrc
中都匹配
答案 3 :(得分:1)
https://docs.microsoft.com/en-us/azure/devops/artifacts/npm/npmrc?view=azure-devops&tabs=windows
此解决方案对我有用。在运行命令vsts-npm-auth -config .npmrc
之前,需要安装其他PowerShell扩展。
答案 4 :(得分:0)
当Microsoft更新将VSTS的名称更改为Azure DevOps时,他们还更改了许多URL。大多数旧版本仍会重定向,但似乎您上面的.npmrc
文件中存在不匹配项。更改 first 行中的URI以匹配其他行,因此如下所示:
registry=https://pkgs.dev.azure.com/[org]/_packaging/[feed].Npm/npm/registry
那应该解除对你的封锁。
请注意,如果您在同一文件中同时拥有注册表和,并且该文件已提交到源代码管理,则还将凭据保存到源代码管理。此处的最佳做法是将.npmrc
保留在项目根中,只有 具有第一行,该行告诉npm连接到哪个注册表。然后,在~/.npmrc
处创建一个新文件(如果使用Windows,则可以使用git bash帮助将其放置在正确的位置),只需添加其他两行,即带有您的凭据的行即可。这样可以使您的凭据在计算机上保持本地状态,并且可以安全地提交带有注册表注释的文件。
此外,请记住,您从Azure软件包注册表生成的凭据最多可以使用90天,因此在某些时候,您将再次收到未授权的错误消息,并且需要在本地{{ 1}}文件。