NPM застрял, выдав ту же ошибку EISDIR: Illegal operation on a directory, read at error (native)

103

Я застрял с этой ошибкой независимо от того, в каком каталоге я нахожусь и что я набираю после "npm" в cmd.exe. Вот журнал 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, я даже удалил папки npm и npm-cache в C: \ Users \ me \ AppData \ Roaming. Я не уверен, что пошло не так, чтобы вызвать это. Одну секунду он работал нормально, и теперь я не могу избавиться от этой ошибки. Объяснение в журнале не имеет смысла, так как выдает эту ошибку в любом каталоге. Следует отметить, что запуск командной строки от имени администратора не вызывает этой ошибки. Я выдергиваю волосы в пятницу вечером, пытаясь это исправить, любая помощь будет очень признательна!

ДругойМайк
источник
1
Я считаю, что эта ошибка является распространенной, когда люди обновляют npm. Мне интересно, началась ли эта ошибка при обновлении npm или вы вообще обновили?
Clavin
Это новый компьютер, поэтому я установил узел за последние несколько дней. Я только что сделал обновление в режиме администратора, но не повезло
AnotherMike

Ответы:

61

Я столкнулся с той же проблемой, когда менял некоторые настройки npm. Я допустил ошибку с одной npm config setкомандой, и это добавило строку, относящуюся к несуществующему каталогу в C:\Users\{User}\.npmrc. После того, как я удалил эту строку вручную .npmrc, проблема исчезла.

user1460043
источник
1
Какой я идиот? Я был в подпапке, ахахаха, спасибо.
Sampgun
Я тоже, я указывал cafile на папку, а не на настоящий файл, и каждая npmкоманда перестала работать полностью, ни одно решение не работало, кроме вашего ответа, спасибо!
Джорджио Темпеста
200

EISDIR означает « Ошибка, это каталог ». Это означает, что NPM пытается что-то сделать с файлом, но это каталог . В вашем случае NPM пытается « прочитать » файл, который является каталогом (строка: 4). Поскольку операция не может быть выполнена, выдается ошибка.

Здесь нужно убедиться в трех вещах.

  1. Убедитесь, что файл существует. Если это не так, вам нужно его создать. (Если NPM зависит от какой-либо конкретной информации в файле, вам нужно будет иметь эту информацию там).
  2. Убедитесь, что это действительно файл, а не каталог.
  3. У него есть нужные разрешения. Вы можете изменить файл, чтобы иметь все разрешения с помощью "sudo chmod 777 FILE_NAME". (Осторожно: вы даете разрешения на чтение, запись и выполнение каждому в этом файле)
МаурисиоЛил
источник
13
Это должен быть принятый ответ imo, поскольку он содержит информацию о проблеме, а также решение
schu34
4
Какой я идиот? Я был в подпапке, ахахаха, спасибо.
Sampgun
4
На это потратил 3 часа. У меня была папка back-button.css. 3 часа Я никогда не вернусь. Благодаря вам не было 4.
Loke
1
Я получил это с помощью fs.writeFile, но из-за ошибки моя программа не смогла передать FileName, поэтому она пыталась записать в папку. Спасибо.
Неллес
1
Это правильно. Я столкнулся с этой проблемой при использовании nodemailer в настольном приложении NW.js при написании кода для почтового менеджера. Я также пытался прочитать каталог вместо чтения файла изображения для отправки в качестве вложения. Большое спасибо.
hygull
13

Была такая же проблема сегодня после того, как я обновил свой npm с версии 6.4.1 до версии 6.5.0. Я исправил это, загрузив установщик .pkg (рекомендованный для большинства пользователей) с node.js и запустив его впоследствии.

PeeJee
источник
Мне помог тот же метод
DNReNTi
на моей машине установлена ​​такая же версия npm, но я все еще сталкиваюсь с проблемой
Gaurav Paliwal
9

В моем случае я получал сообщение «EISDIR: недопустимая операция в каталоге, читать», потому что в моем файле .angular-cli.json я не указывал полный путь в «scripts:»

Например, у меня было

"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 есть глобальный файл конфигурации npmrc, который вы должны отредактировать с помощью этой команды:

sudo nano npmrc

Удалите ca=строку или любой другой параметр конфигурации, который нарушил вашу установку, сохраните этот файл и повторите попытку npm, и вы увидите, что он работает.

rncrtr
источник
Рад, что смог помочь.
rncrtr
4

Эти странные ошибки произошли недавно на моей машине OSX.

Я мог помочь себе быстрым и грязным способом, запустив:

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

Что-то, похоже, испортило права доступа всех модулей глобального узла.

дата
источник
2

Для меня исправление было добавлением косой черты после имени каталога

Miniwe
источник
1

Выполнение полного удаления, включая удаление путей и т. Д., И переустановка решило проблему, хотя и очень странную.

Как полностью удалить node.js из Windows

ДругойМайк
источник
Во-первых, мне не понравился ваш ответ, но должен признаться, что то же самое случилось и со мной. Эта проблема возникла при создании нового 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 нет странных ссылок.

Lanklaas
источник
1

Убедитесь, что вы запускаете npm install из правильного каталога.

(Например, файл package.json может находиться на один дополнительный каталог ниже.)

Джеймс Лорук
источник
1

Была такая же проблема, пока я не попытался удалить папку .git. Это сработало. Думаю, у этого типа проблемы могут быть разные причины.

Хосе Аугусто Пайва
источник
1
То же самое, у меня был репозиторий git внутри репозитория git :) (подмодуль)
Вернер Вааге
1

Если ваша проблема связана с упаковщиком React Native. Попробуйте сбросить кеш с помощью react-native start --reset-cache.

Дружелюбный робот
источник
1

В моем случае я забыл передать полный путь к одному из запрашиваемых файлов. После прохождения полного пути к файлу сработало :)

Рафаэль Пас
источник
1

В моем случае, я столкнулся эта проблема при установке 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

и это действительно решило мою проблему .. !!

Ритеш
источник
1

Убедитесь, что node_modules (и ваш корневой package.json) не содержит ссылки на модуль npm "package.json". Удаление package.json FOLDER из node_modules решило проблему для меня.

Бенджамин Пьетт
источник
0

У меня была аналогичная проблема при настройке шаблонного кода. Он читал мой файл bundle.js как каталог. Итак, как указано здесь. EISDIR означает каталог, а не файл. Чтобы решить эту проблему, я удалил файл и просто воссоздал его (изначально он был создан автоматически). Если вы не можете найти файл (потому что он скрыт), просто используйте терминал, чтобы найти и удалить его.

Пабло ДелаКруз
источник
0

Я была такая же проблема. В моем каталоге была связанная папка, которая вызвала проблему. Я добавил эту папку в список игнорирования, и затем она начала нормально работать, как и ожидалось.

Деюджжал
источник
0

Я знаю, что здесь не спрашивают конкретно о 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

И ошибка исчезла

Марк Александр
источник
0

Обязательно проверьте свою версию npm и проверьте, есть ли с ней проблемы. У меня была такая же проблема во время этого поста, и я обнаружил, что у моей версии npm (6.5) были проблемы. Мне пришлось удалить и переустановить npm версии 6.4.1, и затем все снова стало отлично работать.

smoosh911
источник
0

У меня была неработающая символическая ссылка на node_modules в подпапке

Даниэль Кукула
источник
0

В моем случае эти шаги решили мою проблему:

  1. прекращение npm процесс(CTRL + C)
  2. удаление всей папки
  3. создание нового
  4. npmснова работает
BartusZak
источник
0

В моем случае я использую Windows 10 на испанском языке, и в этой версии смешаны имена каталогов на английском и испанском языках. Моя проблема заключалась в том, что каталог рабочего стола имеет это имя для одних команд и escritorioдля других. Я считаю, что npm не может решить эту проблему. Мое решение заключалось в том, чтобы просто перейти в другой каталог, начиная с C: \, отличный от моего домашнего каталога.

JJEA
источник
0

Я столкнулся с подобной проблемой. Я установил cafile с помощью команды:

npm config set cafile PATH_TO_CERTIFICATE

Я смог решить эту проблему, удалив настройки файла сертификата и установив strict-ssl = false.

Пратик Порвал
источник
0

Я исправил эту проблему, переместив свой каталог с диска exFAT, который не поддерживает символические ссылки.

Мой диск exFat используется совместно osx и разделом Windows bootcamp, поэтому, когда я пытался клонировать и установить мой проект с помощью npm, он терпел неудачу, но никогда не объясняет, что exFAT не поддерживает эту функцию.

Существуют драйверы, которые вы можете установить, чтобы добавить возможность символической ссылки, но вам придется выполнять большую часть настройки вручную по сравнению с запуском простого сценария npm.

Мэтт
источник
0

Для mac os: при установке непосредственно с веб-сайта nodejs файл npmrc будет находиться в / usr / local / etc / npmrc . Просто удалите неопределенный конфиг, и проблема будет решена.

Раджат Гупта
источник
0

Я просто удалил строчку

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

для laravel 5.6 с vue.js. в webpack.mix.js

Данияр Саумбаев
источник
0

В моем случае C:\Users\{user}\AppData\local\npmфайлы были скрыты, поэтому я не смог найти и удалить каталог проблем. Мне потребовались ДНИ, чтобы осознать это!

Так что дважды проверьте, чтобы скрыть все папки, чтобы не пропустить их! Вот ссылка, чтобы сделать это, если вы не знаете, как это сделать.

Джабарбуш
источник