我在发布到托管在我的私人 Nexus 上的私人 npm 注册表时遇到身份验证问题。
我的 Nexus 设置是npm 代理, npm 注册表(托管 npmallowRepublish=false
), npm 快照(托管 npmallowRepublish=true
) and npm-公共(与所有其他三个存储库分组)。
由于我正在开发一个库,所以我正在使用我的快照存储库,因此我可以不断地重新部署相同的版本(类似于 Maven 世界中的快照)。
在我的图书馆项目中,我已设置此选项包.json
"publishConfig": {
"registry": "https://my.nexus.com/repository/npm-snapshots/"
}
接下来,我创建了.npmrc文件包含以下内容:
registry=https://my.nexus.com/repository/npm-public/
_auth=RVhBTVBMRQ==
通过此设置,我可以毫无问题地发布项目。然而,令我困扰的是,我的密码(只是 base64 编码)存储在文件中,应该提交,但由于其中的凭据,我无法提交它。
我尝试登录到 npm 注册表并从 .npmrc 中删除了 auth 行npm adduser --registry=https://my.nexus.com/repository/npm-snapshots --always-auth
我得到回应Logged in as myusername on https://my.nexus.com/repository/npm-snapshots.
然而,当我尝试跑步时npm publish
I get:
npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"
npm verb exit [ 1, true ]
npm timing npm Completed in 6867ms
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\XXXX\AppData\Roaming\npm-cache\_logs\2019-07-30T19_31_01_598Z-debug.log
现在在我的另一个项目(正在使用这个库)中,我只是创建了包含内容的 .npmrc 文件registry=https://nexus.mjamsek.com/repository/npm-public/
并运行命令npm adduser --registry=https://my.nexus.com/repository/npm-public --always-auth
我能够下载已发布的包。
但是,发布仍然无法正常工作,我不知道为什么。
编辑 2019 年 7 月 31 日:在我的活动领域列表中,我也有npm 不记名令牌领域