npm:未处理的拒绝错误:EISDIR:对目录进行非法操作,打开“ /Users/me/.npm/_cacache/content-v2/sha512/b3/da”

时间:2019-04-02 12:10:12

标签: npm

在Mac上,我将工作的npm版本从5.6更新到了6.9:

sudo npm i -g npm

然后我尝试像这样安装cordova:

sudo npm install -g cordova

并获得

Unhandled rejection Error: EISDIR: illegal operation on a directory, 
open '/Users/me/.npm/_cacache/content-v2/sha512/04/89'
npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/me/.npm/_logs/2019-04-02T11_50_57_678Z-debug.log

我试图因此降级:

sudo npm install -g npm@6.4.1

但这失败了,但有数百行是这样的:

npm WARN tar EISDIR: illegal operation on a directory, open '/tmp/npm-30934-a3ac319a/unpack-28da209e/bin/node-gyp-bin'
Unhandled rejection Error: EISDIR: illegal operation on a directory, open '/Users/me/.npm/_cacache/content-v2/sha512/99/72'

我还尝试确保所有权正确:

sudo chown -R $(whoami) ~/.npm

对于其他目录(例如/ usr / lib / modules),有很多关于各种EISDIR(错误是目录)问题的文章,但是似乎没有解决方案。

此外,npmrc文件似乎不存在。如果我这样做:

npm config ls -l

globalconfig = "/usr/local/etc/npmrc"
userconfig = "/Users/me/.npmrc"

但两个文件都不存在。

注意,我没有自制软件,也没有那样安装(我通常是手动安装)。

我也尝试过:

sudo npm cache clean -f

这没有帮助。

我还能尝试什么?我应该尝试删除〜/ .npm目录吗?

在寻找一种卸载节点的方法时,我发现许多旧文章中包含较长且有时相互冲突的要删除文件列表。不知道这是否会使情况更糟。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我想我已经找到了解决方案。我做了以下事情:

  1. 已从https://nodejs.org/en/通过Mac pkg安装程序安装了节点,这将npm降级为6.4.1,这显然是EISDIR问题开始之前的版本。
  2. chmod -R 777〜/ .npm / _cacache //是的,这不好
  3. chown -R me〜/ .npm / _cacache

在此之后,我可以使用“ sudo npm install -g cordova”安装cordova了。

答案 1 :(得分:1)

我升级到npm 6.9.0时遇到了同样的问题。您必须将节点升级到最新版本:

  

重新安装节点

这时,我已经安装了Mac OS Mojave的最新可用版本(节点:v11.14.0和npm 6.9.0)。

节点升级后,我能够再次在全局安装软件包。

答案 2 :(得分:0)

对于使用sudo进行全局安装的EISDIR,可以更改文件的所有权然后避免使用sudo。我想您已安装到默认位置文件夹:

sudo chown -R <user> ~/.npm

sudo chown -R <user> /usr/local/lib

sudo chown -R <user> /usr/local/bin

按此顺序操作后,它对我有用。