【问题标题】:NPM stuck giving the same error EISDIR: Illegal operation on a directory, read at error (native)NPM 卡住给出相同的错误 EISDIR: Illegal operation on a directory, read at error (native)
【发布时间】:2016-04-29 18:45:02
【问题描述】:

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

【问题讨论】:

  • 我发现这个错误在人们更新 npm 时很常见,我想知道这个错误是在你更新 npm 时开始的,还是你根本没有更新?
  • 这是一台新电脑,所以我最近几天安装了node。我刚刚在管理员模式下进行了更新,但运气不佳
  • 我在这上面花了 3 个小时,终于弄明白了——原来我不小心跑了“mkdir .gitignore”

标签: node.js windows cmd npm file-permissions


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        这里要确保三件事。

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

        【讨论】:

        • 这应该是 imo 接受的答案,因为它包含有关问题的信息以及解决方案
        • 我有多白痴?我在一个子文件夹中啊哈哈哈谢谢。
        • 在这上面花了 3 个小时。我有一个名为 back-button.css 的文件夹。 3小时我再也回不来了。多亏了你,它不是 4。
        • 我使用 fs.writeFile 得到了这个 - 但一个错误阻止了我的程序传递 FileName,因此它试图在文件夹上写入。谢谢。
        • 没错。我在为电子邮件管理器编写代码时在 NW.js 桌面应用程序中使用 nodemailer 时遇到了这个问题。我还试图读取目录而不是读取图像文件以作为附件发送。非常感谢。
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 我有多白痴?我在一个子文件夹中啊哈哈哈谢谢。
          • 我也是,我将 cafile 指向一个文件夹而不是实际文件,并且每个 npm 命令都完全停止工作,除了您的回答之外没有其他解决方案,谢谢!
          • 对于那些来自 linux 的用户:.npmrc 位于此处描述的路径之一中:docs.npmjs.com/cli/v7/configuring-npm/npmrc
          • 对我来说,这个问题非常基本,而不是创建 .env 文件,我创建了一个同名文件夹,因此我得到了 EISDIR
          • 就我而言,我去了那条路,一切都可用。实际上,当我尝试调试项目时出现此错误,否则不调试我的项目工作正常。
          【解决方案7】:

          完全卸载,包括删除路径等并重新安装已经解决了这个问题,但是很奇怪的问题。

          How to completely remove node.js from Windows

          【讨论】:

          • 首先我不喜欢你的回答,但我不得不承认同样的事情发生在我身上。使用--react 创建一个新的meteor 项目会导致此问题,但删除该项目并重新创建它仍然有效(OS X)。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-31
          • 1970-01-01
          • 1970-01-01
          • 2019-12-30
          • 1970-01-01
          • 1970-01-01
          • 2021-02-05
          相关资源
          最近更新 更多