NPM застряг, даючи ту саму помилку EISDIR: Незаконна робота в каталозі, читання з помилкою (рідне)


102

Я застряг у цій помилці незалежно від того, в якому каталозі я перебуваю, і що я ввожу після "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-кеш у C: \ Users \ me \ AppData \ Roaming. Я не впевнений, що пішло не так, що це спричинило. Одну секунду це працювало чудово, і тепер я не можу позбутися цієї помилки. Пояснення в журналі не має сенсу, оскільки воно дає цю помилку в будь-якому каталозі. Слід зазначити, що запуск командного рядка як адміністратор не дає цієї помилки. Я витягаю волосся в цю п’ятницю ввечері, намагаючись виправити це, будь-яка допомога буде дуже вдячна!


1
Я вважаю, що ця помилка поширена, коли люди оновлюють npm, мені цікаво, чи почалася ця помилка, коли ви оновили npm, чи взагалі ви оновили?
Клавін

Це новий комп'ютер, тому я встановив вузол за останні кілька днів. Я щойно робив оновлення в режимі адміністратора, але не пощастило
AnotherMike

Відповіді:


61

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


1
Як я ідіот? Я був у підпапці ахахаха дякую.
Сампгун

Я також вказував cafile на папку, а не на фактичний файл, і кожна npmкоманда перестала працювати повністю, жодне рішення не працювало окрім вашої відповіді, дякую!
Джорджіо Темпеста

194

EISDIR означає " Помилка. Є каталог ". Це означає, що NPM намагається щось зробити у файл, але це каталог . У вашому випадку NPM намагається " прочитати " файл, який є каталогом (Рядок: 4). Оскільки операцію зробити неможливо, помилка викидається.

Три речі, щоб переконатися тут.

  1. Переконайтесь, що файл існує. Якщо цього немає, вам потрібно створити його. (Якщо NPM залежить від будь-якої конкретної інформації у файлі, вам потрібно буде мати цю інформацію там).
  2. Переконайтеся, що це насправді файл, а не каталог.
  3. Він має правильні дозволи. Ви можете змінити файл, щоб мати всі дозволи з "sudo chmod 777 FILE_NAME". (Обережно: ви даєте дозволи для читання, запису та виконання для кожного з цього файлу)

13
Це має бути прийнятою відповіддю imo, оскільки вона містить інформацію про проблему, а також рішення
schu34

4
Як я ідіот? Я був у підпапці ахахаха дякую.
Сампгун

3
На це витратили 3 години. У мене була папка під назвою back-button.css. 3 години я ніколи не повертаюся. Завдяки вам не було 4.
Loke

1
Я отримав це за допомогою fs.writeFile - але помилка перешкодила моїй програмі передати FileName, тому вона намагалася записати у папку. Дякую.
Неллес

1
Це правильно. Я зіткнувся з цією проблемою під час використання nodemailer у додатку для настільних комп'ютерів NW.js під час написання коду для менеджера електронної пошти. Я також намагався прочитати каталог замість того, щоб читати файл зображення, надісланий як вкладення. Велике спасибі.
гіга

13

У мене була та сама проблема сьогодні, коли я оновив свій npm з версії 6.4.1 до версії 6.5.0. Я вирішив це, завантаживши інсталятор .pkg (рекомендується для більшості користувачів) з node.js і запустив його згодом.


Точно такий же метод допомагав і мені
DNReNTi

на моїй машині встановлена ​​та ж версія npm, але я все ще стикаюся з проблемою
Gaurav Paliwal

9

У моєму випадку я отримував "EISDIR: незаконна робота з каталогом, читаю", тому що в моєму файлі .angular-cli.json я не забезпечував повний шлях у "script:"

Наприклад, я мав

"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 / тощо є глобальний конфігураційний файл npmrc, який потрібно редагувати за допомогою цієї команди:

sudo nano npmrc

Видаліть ca=рядок або все, що налаштування конфігурації порушило встановлення, збережіть цей файл та спробуйте npm ще раз, і ви побачите, що він працює.


Радий, що можу допомогти.
rncrtr

4

Ці дивні помилки траплялися нещодавно на моїй машині OSX.

Я можу допомогти собі швидким та брудним шляхом, запустивши:

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

Щось, здавалося, зіпсувало права доступу до всіх глобальних модулів вузлів.


2

Для мене виправлення було додавати косу рису після імені каталогу


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 немає дивних посилань.


1

Переконайтеся, що ви працюєте з npm install з потрібного каталогу.

(Наприклад, файл package.json може бути одним додатковим каталогом.)


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) не містять посилання на модуль "package.json" npm. Видалення package.json FOLDER з node_modules вирішило проблему для мене.


0

У мене була подібна проблема під час налаштування кодового коду. Він читав мій файл bundle.js як каталог. Отже, як зазначено тут. EISDIR означає його каталог, а не файл. Щоб вирішити проблему, я видалив файл і просто відтворив (спочатку створено автоматично). Якщо ви не можете знайти файл (оскільки його приховано), просто використовуйте термінал, щоб знайти та видалити його.


0

Була така ж проблема, поки я не спробував видалити папку .git. Це спрацювало. Я думаю, що цей тип проблем може мати різні причини.


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 ділиться між ОСX та розділом bootcamp Windows, тому коли я намагався клонувати та npm встановити свій проект, він провалився, але ніколи не пояснює, що exFAT не підтримує цю функціональність.

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


0

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



0

У моєму випадку C:\Users\{user}\AppData\local\npm файли були приховані, тому я не зміг знайти та видалити каталог проблем. Взяв мене ДЕНЬ, щоб зрозуміти це!

Тому двічі перевірте, щоб приховати будь-які папки, щоб ви їх не пропустили! Ось посилання для цього, якщо ви не знаєте як.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.