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

问题描述 投票:69回答:20

无论我在哪个目录,以及在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 [email protected]
3 info using [email protected]
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文件夹。我不确定导致这种情况出了什么问题。一秒钟它工作正常,现在我无法摆脱这个错误。日志中的解释没有意义,因为它在任何目录中都会出现此错误。我应该注意,以管理员身份运行命令提示符不会出现此错误。我在周五晚上把头发拉出来试图解决这个问题,任何帮助都将不胜感激!

node.js windows cmd npm file-permissions
20个回答
42
投票

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


0
投票

gulp我有这个问题。问题是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文件中没有奇怪的引用。


0
投票

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


0
投票

在我尝试删除.git文件夹之前有同样的问题。有效。我猜这种类型的问题可能有不同的原因。


0
投票

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


0
投票

我知道这不是特别询问永远的js ..但谷歌引导我在这里..对我来说它就像一个结束斜线一样简单。

我改变了:

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
投票

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


0
投票

请务必检查您的npm版本以及是否存在问题。在这篇文章发表时我遇到了同样的问题,我发现我的npm版本(6.5)存在问题。我不得不卸载并重新安装npm版本6.4.1,然后一切都恢复正常。


0
投票

我在子文件夹中的node_modules有一个破损的符号链接


0
投票

在我的情况下,我忘了传递它所询问的文件之一的完整路径。传递文件的完整路径后工作:)


0
投票

就我而言,我在使用以下命令在create-react-app中安装MAC (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

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


124
投票

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

这里要确保三件事。

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

0
投票

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

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

12
投票

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


6
投票

在我的情况下,我得到了“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"
      ],

6
投票

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

sudo nano npmrc

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


5
投票

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

我可以通过运行来帮助自己快速而肮脏的方式:

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

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


1
投票

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

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


1
投票

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


0
投票

做一个完整的卸载,包括删除路径等,并重新安装已解决了问题,但非常奇怪的问题。

How to completely remove node.js from Windows

© www.soinside.com 2019 - 2024. All rights reserved.