记录/推送 npm 包到 nexus 时收到 400 个错误请求?



我正在尝试为我的nodejs项目使用私有npm注册表,并且我正在使用nexus。我保留了要使用的用户admin至少用于测试并保证没有权限问题。但是,我既不能使用npm login --registry <private-registry-address>登录发布,也不能接受npm publish --registry <private-registry-address>。我使用了几种方法,首先我在文件中手动添加条目.npmrc如下所示:

Nexus 3文档中提到了这一点:

➜  echo "email=$NPM_EMAIL" > $HOME/.npmrc                                       
➜  echo "_auth=$(echo -n "$NPM_USER:$NPM_PASS" | openssl base64)" >> $HOME/.npmrc
➜  echo "always-auth=true" >> $HOME/.npmrc

然后我尝试使用npm publish --registry http://172.17.0.1:8081/repository/npmtest/发布,但它只是给了我:

npm ERR! code E400
npm ERR! 400 Bad Request - PUT http://172.17.0.1:8081/repository/npmtest/mypackage

这个是 npm 文档中的官方:

在这里,我使用我拥有的凭据登录存储库,如下所示:

➜  npm login --registry http://172.17.0.1:8081/repository/npmtest/

并输入我的登录凭据:

Username: admin
Password: 
Email: (this IS public) admin@example.org

但不幸的是,它给了我同样的错误:

npm ERR! code E400
npm ERR! 400 Bad Request - PUT http://localhost:8081/repository/npmtest/-/user/org.couchdb.user:admin

正如我在许多讨论中看到的那样,我在 Nexus 中添加了npm Bearer Token Realm,但它也没有产生任何影响。

我尝试使用另一个存储库verdaccio并且它工作正常,这就是为什么我很确定这是一个联系问题。

注意:我正在使用所有存储库管理器(Nexus和verdaccio(作为docker容器,无论如何这应该不是问题。

我正在运行npm版本6.10

有什么解决方案可以让联结发挥作用?

{
...,
"publishConfig": {
"registry": "<linkToNexusRepo>"
}
}

通过在我的package.json中添加这个截图来为我解决问题。

确保为存储库选择了正确的格式和类型。就我而言,我不小心创建了格式不正确的 npm 存储库。

我创建了一个Format: nuget而不是Format: npm.

当您在 Nexus 仪表板中选择存储库时,您可以看到格式。

确保,我们必须在两个地方保留相同的 npmrc 代码行

  • $HOME/.npmrc

  • 根级别的项目.npmrc

    registry=http://172.17.0.1:8081/repository/npmtest/mypackage/npm/registry/
    always-auth=true
    ; begin auth token // remove in the case of $HOME/.npmrc
    //repository/npmtest/mypackage/npm/registry/:username=****
    //repository/npmtest/mypackage/npm/registry/:_password=${NPM_TOKEN}
    //repository/npmtest/mypackage/npm/registry/:email=*****
    //repository/npmtest/mypackage/npm/:username=****
    //repository/npmtest/mypackage/npm/:_password=${NPM_TOKEN}
    //repository/npmtest/mypackage/npm/:email=*****
    ; end auth token // remove in the case of $HOME/.npmrc
    

它肯定会;)

您应该在命令中显式选择本地注册表,或者执行如下所示的一次性配置:

npm config set registry http://localhost:port

不使用上述命令的显式注册表示例:

npm adduser --registry http://localhost:port

最新更新