尝试从命令行登录时 NPM 给出 400

NPM giving 400 when try to login from command line

我正在使用我公司的私有 npm 服务器。我无法从命令行登录,出现以下错误

npm verb login before first PUT {
npm verb login   _id: 'org.couchdb.user:<username>',
npm verb login   name: '<username>',
npm verb login   password: 'XXXXX',
npm verb login   type: 'user',
npm verb login   roles: [],
npm verb login   date: '2021-12-21T14:28:38.709Z'
npm verb login }
npm http fetch PUT 400 
https://<company>/repository/npm/-/user/org.couchdb.user:<username> 40ms
npm verb adduser before first PUT {
npm verb adduser   _id: 'org.couchdb.user:<username>',
npm verb adduser   name: '<username>',
npm verb adduser   password: 'XXXXX',
npm verb adduser   email: '<email>',
npm verb adduser   type: 'user',
npm verb adduser   roles: [],
npm verb adduser   date: '2021-12-21T14:28:38.753Z'
npm verb adduser }
npm http fetch PUT 400 
https://<company>/repository/npm/-/user/org.couchdb.user:<username> 36ms
npm verb stack Error: 400 Bad Request - PUT 
https://<company>/repository/npm/-/user/org.couchdb.user:<username>
npm verb stack     at /usr/lib/node_modules/npm/node_modules/npm-registry-fetch/check- 
response.js:117:15
npm verb stack     at processTicksAndRejections (internal/process/task_queues.js:97:5)
npm verb statusCode 400
npm verb pkgid org.couchdb.user:<my username>
npm verb cwd /home/<my user>/Downloads
npm verb Linux 4.14.231-173.360.amzn2.x86_64
npm verb argv "/usr/bin/node" "/usr/bin/npm" "login" "--verbose" "-- 
registry=https://<my company>/repository/npm/" "--verbose"
npm verb node v12.22.8
npm verb npm  v6.14.15
npm ERR! code E400
npm ERR! 400 Bad Request - PUT 
https://<company>/repository/npm/-/user/org.couchdb.user:dwsollenberger
npm verb exit [ 1, true ]
npm timing npm Completed in 16102ms

我已经试过删除我的 .npmrc 文件,尽管我随后用设置我的 public 和私有证书的新文件替换了它们。

不确定它是否相关,但当我登录该网站时,它最初会让我登录,但当我查看我的帐户详细信息一段时间后才最终弄清楚我是谁时,它抱怨说“找不到用户”。

我也尝试过 运行 通过邮递员发送相同的邮件,但出现 500 错误。我知道我的邮递员没有正确设置密码,因为我不知道 npm 如何对其进行哈希处理,所以大概这就是 500 错误的原因。

如果有人能提供帮助,我真的很想能够登录到我的 NPM :)

原来我需要设置我的 CA 以及我的其他证书。所以我运行

npm config set cafile=<path to ca file>

虽然我的 CA 包含自签名证书,但随后出现错误。我用以下方法解决了这个问题:

npm config set strict-ssl false

顺便说一下,我也在使用 yarn,尽管 yarn 应该是从 .npmrc 文件中读取的,但我不得不单独关闭 strict-ssl 以使其正常工作

yarn config set strict-ssl false