NPM卡住,给出相同的错误EISDIR:对目录的非法操作,读取时出错(本机)


102

无论我在哪个目录中,以及在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 ]

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


1
我发现这个错误在人们更新npm时很常见,我想知道这个错误是在您更新npm时开始的,还是您根本没有更新的?
克拉文

这是一台新计算机,所以最近几天我已经安装了node。我只是在管理员模式下进行了更新,但没有运气
AnotherMike

Answers:


60

更改某些npm设置时遇到了相同的问题。我在执行一个npm config set命令时犯了一个错误,并且在上添加了一个行,该行指向一个不存在的目录C:\Users\{User}\.npmrc。我从手动删除该行后.npmrc,问题消失了。


1
我是个白痴吗 我在子文件夹中,啊哈哈哈,谢谢。
amp弹枪

我也是,我将cafile指向一个文件夹而不是一个实际文件,并且每个npm命令都完全停止工作,除了您的回答,没有解决方案起作用,谢谢!
乔治·坦佩斯塔

194

EISDIR代表“ 错误,是目录 ”。这意味着NPM试图对文件进行操作,但它是目录。在您的情况下,NPM试图“ 读取 ”作为目录的文件(第4行)。由于无法完成该操作,因此会引发错误。

这里要确保三件事。

  1. 确保文件存在。如果不是,则需要创建它。(如果NPM取决于文件中的任何特定信息,则需要在该位置存储该信息)。
  2. 确保它实际上是文件而不是目录。
  3. 它具有正确的权限。您可以使用“ sudo chmod 777 FILE_NAME”将文件更改为具有所有权限。(注意:您正在授予该文件上每个文件的读取,写入和执行权限)

13
这应该是imo可接受的答案,因为它包含有关问题的信息以及解决方案
schu34

4
我是个白痴吗 我在子文件夹中,啊哈哈哈,谢谢。
amp弹枪

3
在此上花费了3个小时。我有一个名为back-button.css的文件夹。3个小时我再也回不到。谢谢你,不是
4。– Loke

1
我是使用fs.writeFile来获得此文件的-但是由于错误,我的程序无法通过FileName传递,因此它试图在文件夹上进行写操作。谢谢。
内尔斯(Nelles)'18

1
没错 在为电子邮件管理器编写代码时,在NW.js桌面应用程序中使用nodemailer时遇到了这个问题。我还试图读取目录,而不是读取图像文件作为附件发送。非常感谢你。
hygull18年

13

我将npm从6.4.1升级到6.5.0后,今天也遇到了同样的问题。我通过从node.js下载.pkg安装程序(建议大多数用户使用)来修复此问题,然后再运行它。


完全相同的方法对我
有所

我的机器安装了相同的npm版本,但是我仍然面临问题
Gaurav Paliwal

9

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

例如我有

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

实际上应该

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

7

我在Mac OS X(与Homebrew一起安装)上遇到了相同的问题,.npmrc并不是唯一存储配置变量的位置节点。/ usr / local / etc中有一个glocal npmrc配置文件,您必须使用以下命令进行编辑:

sudo nano npmrc

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


很高兴我能帮助你。
rncrtr

4

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

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

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

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



1

进行完整的卸载(包括删除路径等)并重新安装已解决了该问题,尽管这是一个非常奇怪的问题。

如何从Windows完全删除node.js


首先,我不喜欢您的回答,但我必须承认,同样的事情对我也有影响。使用创建新meteor项目会--react导致此问题,但是删除该项目并重新创建它可以正常工作(OS X)。
Hola Soy Edu Feliz Navidad

1

我有这个问题。问题是gulp向我的源文件添加了依赖关系,我认为npm试图打开它:

{
  "name": "name",
  "version": "2.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "appname": "file://gulp",
    "gulp-concat": "^2.6.1",
    "gulp-electron": "^0.1.3",
    "gulp-shell": "^0.5.2",
    "gulp-uglify": "^2.0.0",
    "gulp-util": "^3.0.7",
    "node-7z": "^0.4.0"
  }
}

确保您的package.json文件中没有奇怪的引用。


1

检查以确保您从正确的目录运行npm install。

(例如,package.json文件可以是一个额外的目录。)


1

如果您的问题与React Native打包程序有关。尝试使用重置缓存react-native start --reset-cache



1

就我而言,create-react-appMAC (Mojave OS)使用以下命令进行安装时遇到了这个问题:

sudo npm install create-react-app -g

并得到这样的错误:

npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/scheduler'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/src/webSocket'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/symbol'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/testing'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/util'
npm WARN tar EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/.staging/rxjs-a84420a7/webSocket'

我已阅读npm.community,尝试不安装以下内容sudo

npm install create-react-app -g

它实际上解决了我的问题..!



0

设置样板代码时,我遇到了类似的问题。它正在读取我的bundle.js文件作为目录。因此,如此处所述。EISDIR表示其目录而不是文件。为了解决这个问题,我删除了文件并重新创建了它(它最初是自动创建的)。如果找不到文件(因为它是隐藏的),只需使用终端来查找和删除它。



0

我遇到过同样的问题。我的目录中有一个链接的文件夹,这是导致此问题的原因。我添加了该文件夹以忽略列表,然后按预期开始正常工作。


0

我知道这不是专门针对永远的js的问题。但是Google在这里引导了我。

我只是改变了:

forever start -a -l /dev/null/ /var/www/node/my_file.js

至:

forever start -a -l /dev/null /var/www/node/my_file.js

错误消失了


0

确保检查您的npm版本,以及是否有问题。在撰写本文时,我遇到了同样的问题,并且发现我的npm版本(6.5)出现了问题。我必须卸载并重新安装npm 6.4.1版,然后一切再次开始正常运行。



0

就我而言,这些步骤解决了我的问题:

  1. 终止npm过程(CTRL + C)
  2. 删除整个文件夹
  3. 创造新的
  4. npm再次运行

0

就我而言,我使用西班牙语的Windows 10,并且此版本混合了英语和西班牙语目录名称。我的问题是,桌面目录在某些命令和escritorio其他命令中都有此名称。我相信npm无法解决此问题。我的解决方案是简单地更改为从C:\开始的另一个目录,该目录与我的主目录不同。


0

我曾经遇到过类似的问题。我使用以下命令设置cafile:

npm config set cafile PATH_TO_CERTIFICATE

我可以通过删除证书文件设置和设置来解决此问题strict-ssl = false


0

我通过从不支持符号链接的exFAT驱动器中移动目录来解决此问题。

我的exFat驱动器在osx和bootcamp Windows分区之间共享,因此当我尝试克隆和npm安装我的项目时,它失败了,但从未解释过exFAT不支持此功能。

您可以安装一些驱动程序来添加符号链接功能,但是与运行简单的npm脚本相比,您必须手动进行很多设置。




0

就我而言,C:\Users\{user}\AppData\local\npm文件是隐藏的,因此我无法找到和删除故障目录。花了我几天的时间来意识到这一点!

因此,请仔细检查以取消隐藏任何文件夹,以免您错过它们! 如果您不知道如何做,这里是一个链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.