npm 错误!无法验证,需要:Basic Realm=“Artifactory Realm”

N.S*_*lwi 29 artifactory npm

我尝试运行命令:

\n
npm install -g @angular/cli@9.1.0\n
Run Code Online (Sandbox Code Playgroud)\n

但我有以下错误:

\n
\n

npm 错误!代码E401
\nnpm 错误!无法验证,需要:Basic Realm=“Artifactory Realm”

\n

npm 错误!此运行的完整日志可以在以下位置找到:
\nnpm ERR!/Users/xxxx/.npm/_logs/2021-08-10T19_33_12_063Z-debug.log

\n
\n

注意:node js 和 npm 工作正常。

\n

我已按照 Artifactory 中的说明使用以下命令解决此问题:

\n
npm config set registry https://artifactory.......com/artifactory/api/npm/xxxx/\n
Run Code Online (Sandbox Code Playgroud)\n

因为我已将以下内容粘贴到 ~/.npmrc 文件中:

\n
_auth = fhgf......ghgj==\nemail = xxx@xxx.com\nalways-auth = true\n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试过使用npm login,但出现以下错误并且无法\xe2\x80\x99t 继续:

\n
\n

npm 登录
\n用户名:xxx@xxx.com
\nnpm 警告名称不能包含非 url 安全字符
\n用户名:(xxx@xxx.com)
\n用户名:(xxx@xxx.com)
\n用户名:(xxx@xxx .com)
\n用户名: (xxx@xxx.com)

\n
\n

我该如何解决这个问题?

\n

kam*_*eet 30

Artifactory 改为仅支持 APIKEY。如果您的旧 _auth 是username:password或的 base64 编码username:encrypted_password,那么现在两者都是不可接受的。您必须使用 APIKEY 来代替这些。

因此,支持的 _auth 现在变为:

_auth:APIKEY

但讽刺的是,即使这样在某些情况下也不起作用。

以下似乎更可靠:

  1. 您需要获取您的用户名的 Base64 字符串:APIKEY。您可以通过在PowerShell中运行以下命令来获取base64

[System.Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("username:APIKEY"))

  1. 无论输出是什么,请在 .npmrc 文件的 _auth 变量中使用它(位于%userprofile%\.npmrc

因此,最终文件如下所示:

registry=<URL>
_auth = <Base64 of username:APIKEY>
email = myemail@email.com
always-auth = true
Run Code Online (Sandbox Code Playgroud)

  • 有此更改的文档链接吗?我现在正在寻找,找到后会发布 (6认同)

小智 10

该问题是由于用户名中的“@”特殊字符造成的,我假设该用户是基于 SAML 的。请按照以下步骤解决该问题,

\n
    \n
  1. 使用 /api/npm/auth 端点和 \xe2\x80\x9ccurl -u :<API_KEY> https://url/artifactory/api/npm/auth/\xe2\x80\x9d 生成身份验证令牌
  2. \n
  3. 将生成的块直接添加到 .npmrc 文件中,如下所示
  4. \n
\n
\n

_auth = 从第一点生成的身份验证令牌

\n
\n
\n

始终验证 = true

\n
\n


Raj*_*han 5

尝试这样的事情。

.npmrc 文件内容如下:

//npm.corp_id.com/:_authToken=TOKEN_VALUE_HERE
Run Code Online (Sandbox Code Playgroud)

从 .npmrc 中的 authToken 中删除_,这只是为了我

//npm.corp_id.com/:authToken=TOKEN_VALUE_HERE
Run Code Online (Sandbox Code Playgroud)