npm publish causes 'Error: EPERM: operation not permitted, unlink ...', errno -4048

npm publish causes 'Error: EPERM: operation not permitted, unlink ...', errno -4048

我正在尝试发布我的 NPM 包:npm publish

我收到以下非常神秘的错误:

npm ERR! path c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz'
npm ERR!     at Error (native)
npm ERR!  { Error: EPERM: operation not permitted, unlink 'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz'
npm ERR!     at Error (native)
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, unlink 'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz'
npm ERR!        at Error (native)
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'unlink',
npm ERR!      path: 'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz' },
npm ERR!   isOperational: true,
npm ERR!   stack: 'Error: EPERM: operation not permitted, unlink \'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz\'\n    at Error (native)',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'unlink',
npm ERR!   path: 'c:\Temp\npm-20936-b98f84c8\tmp\fromDir-02dd5394\package.tgz' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

以管理员身份尝试 运行 - 同样的错误。

NPM 版本:5.4.0

节点版本:6.11.1

OS: Windows 10

有线索吗?

傻我。答案在文档中 all along.

为了发布你需要从你的 NPM cli 登录。

因此,如果您在 npmjs.com 上已有用户,请执行 npm login,或者 npm adduser 创建一个。

不过,我希望能收到信息更丰富的错误消息。

我在 Windows 上遇到了同样的问题。

问题的根源很简单,就是文件夹和文件的访问权限。

这是我的经验。

我在 Atom 上工作,在 Atom 上拖放文件,导致错误。 所以我在 Win10 上退出 atom 并再次 运行 npm i 。成功了。

请关闭您的编辑器或资源管理器,它们会限制您的项目文件,然后重试。

我通过重新安装 windows 驱动器更改为新的文件系统。之后就没有问题了。参考以下link.

在某些情况下,只需指向正确的 package.json 文件即可。之前省略了param,导致报错

之前:npm publish

之后:npm publish C:\Code\my-proj\dist\@acme\my-package

还在苦苦挣扎的人,如果你有类似的东西,请检查你的 package.json 文件 publishConfig 已初始化。
删除这个就是为我解决的问题

在我的案例中,问题是参数不正确 npm publish --opt=123456(错字 opt => otp ... 一次性密码 - 2factor)。在参数错误的情况下,这个误导性的权限错误很糟糕 The operation was rejected by your operating system.