npm发布时出现“Error: EPERM: operation not permitted, unlink ...”,错误码为-4048。

50

我正在尝试发布我的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

Node版本:6.11.1

操作系统:Windows 10

有任何线索吗?


我只想补充一点,如果你在Windows上使用Gradle脚本而没有在.gitignore文件中排除“.gradle”,或者在运行npm pack/publish命令时尝试添加任何类型的锁定文件,也会出现这个问题。我曾经为此苦苦搜索了12个小时。更多信息请参见:https://nigglingaspirations.blogspot.com/2020/09/the-npm-pack-command-works-fine.html。 - cjones26
7个回答

86

我真傻。答案一直在文档里。

要发布包,你需要从NPM cli登录。

如果你已经在npmjs.com上有账号,请执行npm login,否则执行npm adduser来创建一个。

不过,我希望得到更多的错误信息。


1
哦,天啊!它在我这边可以工作。我在我的主机上已经登录了很长时间......但是由于我改了密码,所以出现了这个错误,所以谢谢!重新登录就可以解决了! - Radi Cho
2
多糟糕的错误信息啊!我们通过将私有npm仓库的详细信息包含在.npmrc文件中来解决了这个问题。 - Dai Bok
我在文档中没有找到这个,尽管这是做的第一件显而易见的事情。 - Kat Lim Ruiz
是的,npm login 解决了这个问题。信息提示有误导性! - duckegg
我也不知道。而且,我认为这与登录无关。我认为有些东西锁定了文件或目录。可能是IDE或者我的雇主的杀毒软件。 - Amnon
显示剩余7条评论

2

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

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


1

这是我的经验。

我正在使用Atom,并在Atom上执行文件拖放操作时出现错误。 所以我退出Win10上的Atom并再次运行npm i。它成功了。

请关闭可能限制项目文件的编辑器或资源管理器,然后再试一次。


0

我通过重新挂载我的Windows驱动器来更换新的文件系统。之后就没有出现任何问题了。请参考以下link


0
在某些情况下,问题在于指向正确的 package.json 文件。之前遗漏了参数导致了错误。
之前的命令: npm publish 之后的命令: npm publish C:\Code\my-proj\dist\@acme\my-package

0

对于仍在苦苦挣扎的人,请检查您的 package.json 文件是否有类似 publishConfig 初始化的内容。
删除这些内容是解决问题的关键。


0
在我的情况下,问题是参数不正确:npm publish --opt=123456(opt 打成了 otp……一次性密码 - 2FA)。如果参数错误,会出现这种误导性的权限错误:The operation was rejected by your operating system.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接