NPM卡住了同样的错误EISDIR:对目录的非法操作,错误读取(本机)

Ano*_*ike 82 windows file-permissions cmd node.js npm

无论我在哪个目录,以及在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 ]
Run Code Online (Sandbox Code Playgroud)

我已多次尝试和卸载/重新安装nodejs,我甚至删除了C:\ Users\me\AppData\Roaming中的npm和npm-cache文件夹.我不确定导致这种情况出了什么问题.一秒钟它工作正常,现在我无法摆脱这个错误.日志中的解释没有意义,因为它在任何目录中都会出现此错误.我应该注意,以管理员身份运行命令提示符不会出现此错误.我在周五晚上把头发拉出来试图解决这个问题,任何帮助都将不胜感激!

Mau*_*eal 150

EISDIR代表" 错误,是目录 ".这意味着NPM正在尝试对文件执行某些操作,但它是一个目录.在您的情况下,NPM正在尝试" 读取 "作为目录的文件(行:4).由于无法执行操作,因此会引发错误.

这里要确保三件事.

  1. 确保文件存在.如果没有,则需要创建它.(如果NPM依赖于文件中的任何特定信息,则需要在那里获得该信息).
  2. 确保它实际上是文件而不是目录.
  3. 它具有正确的权限.您可以使用"sudo chmod 777 FILE_NAME"更改文件以获得所有权限.(小心:您正在为该文件上的每个人授予读,写和执行权限)

  • 这应该是接受的答案imo,因为它包含有关问题的信息以及解决方案 (8认同)
  • 我是个白痴 我在子文件夹中,啊哈哈哈,谢谢。 (2认同)
  • 在此上花费了3个小时。我有一个名为back-button.css的文件夹。3个小时我再也回不到。幸亏您不是4。 (2认同)
  • 我使用 fs.writeFile 得到了这个 - 但一个错误阻止了我的程序传递 FileName,因此它试图在文件夹上写入。谢谢。 (2认同)

use*_*043 51

我在更改某些npm设置时遇到了同样的问题.我用一个npm config set命令做错了,这增加了一行引用一个不存在的目录C:\Users\{User}\.npmrc.手动删除该行后.npmrc,问题就消失了.

  • 我有多傻?我在一个子文件夹中啊哈哈哈哈谢谢。 (4认同)

Pee*_*Jee 13

在我将我的npm从版本6.4.1升级到版本6.5.0之后,今天遇到了同样的问题.我通过从node.js下载.pkg安装程序(推荐给大多数用户)并在之后运行它来修复此问题.


Oma*_*imi 10

对我来说,这是因为我走错了路;它应该是文件的路径,但我错误地使用了目录的路径:

改变了这一点:

path.resolve(__dirname, '../');
Run Code Online (Sandbox Code Playgroud)

进入这个:

path.resolve(__dirname, '../.env')
Run Code Online (Sandbox Code Playgroud)


小智 7

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

例如我有

"scripts": [
        "../node_modules/hammerjs",
        "../node_modules/moment"
      ],
Run Code Online (Sandbox Code Playgroud)

实际上应该是

"scripts": [
        "../node_modules/hammerjs/hammer.min.js",
        "../node_modules/moment/min/moment.min.js"
      ],
Run Code Online (Sandbox Code Playgroud)


rnc*_*rtr 6

我在Mac OS X(用自制安装)相同的问题,而.npmrc不是唯一的地方节点存储配置变量.在/ usr/local/etc中有一个glocal npmrc配置文件,您必须使用此命令进行编辑:

sudo nano npmrc
Run Code Online (Sandbox Code Playgroud)

删除该ca=行,或者任何破坏安装的配置设置,保存该文件,然后再次尝试npm,您应该看到它正常工作.


dat*_*eah 5

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

我可以通过运行以下命令来帮助自己快速又肮脏:

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

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

  • 如果您使用“sudo chmod -R 775 /usr/local/lib/node_modules/”,那就更好了。做“777”有点危险。 (5认同)

mal*_*dao 5

所以大多数答案都说它与 .npmrc 文件有关。

就我而言,我正在使用以下消息部署无服务器应用程序serverless deploy

EISDIR: illegal operation on a directory, unlink '/home/malvadao/workspace/project/.build/node_modules'

被扔了。

删除.build文件夹对我来说是这样。就是Typescript编译后生成的文件夹。由于启动命令后会重新创建文件夹serverless deploy,因此足以解决问题并继续流程。

换句话说,手动删除该文件夹可能足以让您继续前进,而无需触摸 .npmrc