无论我在什么目录下,无论我在cmd.exe中键入“npm”后,我都被这个错误卡住了。下面是npm-debug.log:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js' ]
2 info using npm@2.14.12
3 info using node@v4.2.6
4 verbose stack Error: EISDIR: illegal operation on a directory, read
4 verbose stack     at Error (native)
5 verbose cwd C:\Users\me
6 error Windows_NT 6.1.7601
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js"
8 error node v4.2.6
9 error npm  v2.14.12
10 error code EISDIR
11 error errno -4068
12 error syscall read
13 error eisdir EISDIR: illegal operation on a directory, read
13 error eisdir This is most likely not a problem with npm itself
13 error eisdir and is related to npm not being able to find a package.json in
13 error eisdir a package you are trying to install.
14 verbose exit [ -4068, true ]

I have tried and uninstalling/reinstalling nodejs multiple times, I even deleted npm and npm-cache folders in C:\Users\me\AppData\Roaming. I'm not sure what went wrong to cause this. One second it was working fine, and now I can't get rid of this error. The explanation in the log does not make sense, as it gives this error in any directory. I should note that running a command prompt as administrator does not give this error. I'm pulling my hair out this Friday evening trying to get this fixed, any help would be greatly appreciated!


当前回答

对我来说,修复是在目录名称后添加斜杠

其他回答

在我的例子中,“错误:EISDIR:对目录的非法操作,已读”问题在于我所在的文件夹的名称。似乎,在windows系统上使用特殊字符(在我的例子中是#)也会导致这个错误。

我也遇到过类似的问题。我使用命令设置cafile:

npm config set cafile PATH_TO_CERTIFICATE

我可以通过删除证书文件设置并设置strict-ssl = false来解决这个问题。

在我的情况下,我得到了“EISDIR:非法操作的目录,读取”,因为在我的.angular-cli。我没有在“脚本”中提供完整的路径:

例如,我有

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],

事实上,它本该如此

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],

在我的例子中,C:\Users\{user}\AppData\local\npm文件被隐藏,所以我无法找到并删除故障目录。我花了几天时间才意识到这一点!

所以,仔细检查,取消隐藏任何文件夹,这样你就不会错过它们!如果你不知道怎么做,这里有一个链接。

这些奇怪的错误最近发生在我的OSX机器上。

我可以用快速而肮脏的方式来帮助自己:

sudo chmod -R 777 /usr/local/lib/node_modules/

似乎有什么东西打乱了所有全局节点模块的访问权限。