- 发布私有包到npm私有仓库时报以下错误:
npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"
排除了以下可能性:
- 信息输入错误
- 服务器权限等配置错误
私有库地址如下 http://192.168.1.*:8081/repository/npm-hosted/
把最后的斜杠去掉,变成
http://192.168.1.*:8081/repository/npm-hosted
即发布成功。
原因分析:有斜杠时nexus指向的仓库不再是 npm-hosted,且找不到相关仓库授权信息,所以返回无权限。
- 授权问题
nx-repository-admin-npm-<仓库名>-edit:应该是 UI admin 权限,即从浏览器中登录管理界面的编辑权限
nx-repository-view-npm-<仓库名>-edit:应该是客户端访问权限,即从命令控制台执行相关访问指令的编辑权限
因前者带 admin ,容易误以为是包含所有的最高权限,所以不再去分配 view 相关的权限,其实这两者的权限是分开的,并不重叠。
所以发包权限需要增加后者的相关权限