NPM 坚持给出相同的错误 EISDIR:目录上的非法操作,错误读取(本机)

NPM stuck giving the same error EISDIR: Illegal operation on a directory, read at error (native)

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

我试过uninstalling/reinstalling nodejs 多次,我什至删除了 C:\Users\me\AppData\Roaming 中的 npm 和 npm-cache 文件夹。我不确定是什么原因导致的。一秒钟它工作正常,现在我无法摆脱这个错误。日志中的解释没有意义,因为它在任何目录中都会出现此错误。我应该注意 运行 作为管理员的命令提示符不会给出此错误。我将在本周五晚上竭尽全力解决此问题,如有任何帮助,我们将不胜感激!

完全卸载,包括删除路径等,然后重新安装已解决问题,但问题很奇怪。

How to completely remove node.js from Windows

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

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

sudo nano npmrc

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

我在使用 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 文件中没有奇怪的引用。

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

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

EISDIR 代表“错误,是目录”。这意味着 NPM 正在尝试对文件执行某些操作,但它是一个 目录 。在你的例子中,NPM 试图“读取”一个文件,它是一个目录(第 4 行)。由于无法完成操作,因此抛出错误。

这里有三件事要确定。

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

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

在我的例子中,我得到了 "EISDIR: illegal operation on a directory, read",因为在我的 .angular-cli.json 文件中,我没有在 "scripts:"[=12 中提供完整路径=]

例如我有

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

其实应该是

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

遇到同样的问题,直到我尝试删除 .git 文件夹。有效。我想这种类型的问题可能有不同的原因。

如果您的问题与 React Native 打包器有关。尝试使用 react-native start --reset-cache.

重置缓存

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

我知道这不是专门询问 forever 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

错误消失了

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

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

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

我可以通过 运行:

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

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

确保检查您的 npm 版本以及它是否存在问题。我在 post 时遇到了同样的问题,我发现我的 npm 版本 (6.5) 有问题。我不得不卸载并重新安装 npm 6.4.1 版,然后一切又开始正常运行。

我在子文件夹

中有一个指向 node_modules 的符号链接损坏

在我的例子中,我忘记传递它所询问的文件之一的 完整 路径。通过文件的完整路径后有效:)

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

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

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

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

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

确保 node_modules(和您的根 package.json)不包含对 npm 的 "package.json" 模块的引用。从 node_modules 中删除 package.json FOLDER 解决了我的问题。

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

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

npm config set cafile PATH_TO_CERTIFICATE

我可以通过删除证书文件设置并设置 strict-ssl = false.

来解决这个问题

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

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

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

对于macos: 如果直接从 nodejs 网站安装,npmrc 文件将位于 /usr/local/etc/npmrc。只需删除未定义的配置即可解决此问题。

我刚刚删除了行

.babel('resources/assets/js/app.js')

对于 laravel 5.6 和 vue.js。在 webpack.mix.js

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

因此请仔细检查以取消隐藏任何文件夹,以免遗漏它们! Here's a link如果你不知道怎么做,可以这样做。

在 Mac:

Per-user 配置文件:~/.npmrc

在我的例子中,问题是 space 字符在源文件夹的名称中 (Windows 10)。

只需删除 c:users>'username' 中的 .npmrc 文件夹,然后尝试 运行 命令即可解决!

就我而言,我正在使用 material 开发 angularv10。我更改了一些脚本文件,忘记删除脚本数组中的这些空“”

脚本:[.....bla、bla 等,""]

删除这些空的""

npm 清除缓存 --force

关闭和打开vscode

成功了。

这发生在我身上 npm publish --access public 命令。项目包含名为 package.json 的目录。这个错误很可悲——因为项目必须有这个目录并命名为 package.json(它是断言这个 lib 的正确行为的测试用例夹具的一部分)。

我今天在 Visual Studio 代码中遇到这个问题。我能够通过更正我的 用户设置 中设置的更漂亮的配置路径来解决问题。要验证您的路径设置,select 文件 > 首选项 > 设置。在您的用户设置中,搜索 更漂亮的配置文件的路径 并确保它是正确的。

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

改变了这个:

path.resolve(__dirname, '../');

进入这个:

path.resolve(__dirname, '../.env')

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

就我而言,我使用 serverless deploy 和消息

部署 无服务器 应用程序

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

被抛出。

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

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

我正在使用来自 Laravel v8.56.0

的 Mix v6.0.29

在webpack.mix.js中,使用

复制目录时

mix.copyDirectory("resources/js", "public/js");

检查内部文件夹,不能包含dot/s (.) 否则会弹出此错误。

我认为对于这个特定版本,带有 dot/s 后跟一些字符的路径(或文件夹)类似于文件扩展名,然后将被视为“文件”,无论它是否是“文件夹” .

我遇到了同样的问题。

最近刚刚删除了用户目录下的.npmrc文件,然后运行 npm init -y

有效!