我正在尝试将我的私有模块发布到新的设置nexus OSS 3.8.0-02(在sonatype / nexus3 docker容器中运行),并使用errno: -4048
发出错误。
我的npm版本位于:node v8.9.4和npm v5.6.0
我已经尝试在我的C:\ Users \ AHOU \目录下的.npmrc中添加我的base64编码用户名和密码,如此
always-auth=true
_auth="<generated base64>"
email=anselmhou.ps@gmail.com
prefix=C:\kits\npm
@ngpf:registry=http://<nexus server ip>:28081/nexus/repository/npm-public/
但每当我尝试运行命令时:npm publish -ddd --registry http://<nexus server ip>:28081/nexus/repository/npm-private/
它只是出现以下错误
npm sill mapToRegistry uri http://<nexus server ip>:28081/nexus/repository/npm-public/@ngpf%2fcore
npm verb publish registryBase http://<nexus server ip>:28081/nexus/repository/npm-public/
npm sill publish uploading C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz
npm verb stack Error: EPERM: operation not permitted, unlink 'C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz'
npm verb cwd P:\PCCW Framework\workspace\ngpf\ngpf-core\dist
npm verb Windows_NT 10.0.16299
npm verb argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "publish" "-ddd" "--registry" "http:// <nexus server ip>:28081/nexus/repository/npm-private/"
npm verb node v8.9.4
npm verb npm v5.6.0
npm ERR! path C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz'
npm ERR! { Error: EPERM: operation not permitted, unlink 'C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz'
npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, unlink 'C:\Users\AHOU\AppData\Local\Temp\npm-9292-9e938c82\tmp\fromDir-f6e11f6c\package.tgz'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'unlink',
npm ERR! path: 'C:\\Users\\AHOU\\AppData\\Local\\Temp\\npm-9292-9e938c82\\tmp\\fromDir-f6e11f6c\\package.tgz' },
npm ERR! isOperational: true,
npm ERR! stack: 'Error: EPERM: operation not permitted, unlink \'C:\\Users\\AHOU\\AppData\\Local\\Temp\\npm-9292-9e938c82\\tmp\\fromDir-f6e11f6c\\package.tgz\'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'unlink',
npm ERR! path: 'C:\\Users\\AHOU\\AppData\\Local\\Temp\\npm-9292-9e938c82\\tmp\\fromDir-f6e11f6c\\package.tgz' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm verb exit [ -4048, true ]
任何见解或建议都会有所帮助。
提前谢谢你, 安瑟伦
答案 0 :(得分:2)
所以另一个答案是好的,指的是在.npmrc文件中设置注册表,如
你需要做一个像
这样的登录npm login --registry=http://IDK.com:8081/repository/yourRepo/
然后你需要存储一个管理员/密码/电子邮件。这将最终出现在'home'目录中的.npmrc文件中
registry=https://registry.npmjs.org/
@youreRegistry=http;//yourRegistry.com:8081/repository/thatRepoYouMadeInNexus/
^注意正斜杠
我还要设置:
always-auth=false
另一方面说明。跳到你的package.json中,找到你想要推送的代码并将此条目输入其中:
"publishConfig": {
"yourRegistryName": "...your private registry..."
}
^请注意,如果您的注册表在开头有一个'@'或一个特殊名称,那么请确保您不要只放置'注册表'。否则这只是'注册表':...
对于那些不知道持有令牌的人或者领域是什么并且不知道为什么你会收到这个错误,或者为什么你得到一个未经授权的403 401.看看这个
希望有所帮助。这绝对是我固定的东西。之后立即工作。 参考