我尝试使用此命令将npm包发布到我们的nexus私人注册表中:
npm publish --registry http://localhost:8081/nexus/content/repositories/npmjs
但是我收到了这个错误:
npm ERR! path C:\Users\USER~1.MAJ\AppData\Local\Temp\npm-13292-e2329f38\tmp\fromDir-e7e42b8d\package.tgz
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'C:\Users\USER~1.MAJ\AppData\Local\Temp\npm-13292-e2329f38\tmp\fromDir-e7e42b8d\package.tgz'
...
npm ERR! Please try running this command again as root/Administrator.
这是我的npm配置(.npmrc):
registry: 'http://localhost:8081/nexus/content/repositories/npmjs/',
_auth: 'YWRtaW46YWRtaW4xMjM=',
'always-auth': true
我该如何解决这个问题?
npm -v
:5.3.0
node -v
:v8.8.0
npm config get registry
:http://localhost:8081/nexus/content/repositories/npmjs
答案 0 :(得分:2)
感谢@DarthHater我找到了解决方案,所以我想要做的是发布到代理存储库,指向官方的npm注册表,而不是这样做我必须创建一个私有(托管)存储库对于我自己的包,然后使用组存储库在单个URL下提供所有repos,通过这样做我必须将组存储库设置为默认存储库(在.npmrc
中)并将私有存储库设置为发布存储库(在package.json
中),并且不要忘记在.npmrc
(任何电子邮件)中分配电子邮件,因此在发布时将使用本地.npmrc
中的设置(验证... )而不是主页.npmrc
中的设置。
答案 1 :(得分:1)
您是否尝试发布到代理或群组网址?我问,因为URL只是通过命名约定看起来像是npmjs的代理。如果是这样,请确保您使用的URL用于私有托管存储库。
另外,使用Nexus Repository 3:)
答案 2 :(得分:0)
我认为这实际上是NPM的一个已知问题。
暂时解决这个问题,降级到NPM V5.3 npm install npm@5.3 -g