npm встановлення помилок з помилкою: ENOENT, chmod


128

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

npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/giodamlio/npm-debug.log
npm ERR! not ok code 0

Я використовую судо, і я потрійно перевірив все в пакеті, все має працювати. Я кілька пошукав навколо, і побачив пару випадків, які не були вирішені. Ось що я спробував.

  • Оновити npm ( sudo npm install -g npm)
  • Очистити глобальний кеш-пам'ять npm ( sudo npm cache clear)
  • Очистити кеш-пам'ять користувача npm ( npm cache clear)

Я помітив, що помилка пов'язана з файлом, який я посилаю на шлях, зокрема, коли npm намагався зробити chmod. Це не повинно бути проблемою, у мене lib/cli.jsнормальні дозволи, а npm має права суперпользователя під час цього встановлення.

Після перекопування файлів npm я знайшов варіант, який не дозволив npm робити посилання на бін ( --no-bin-links), коли я спробував встановити з ним, він працював чудово.

То яка ж угода? Це якась дивна помилка з бахромою, яка ще не має рішення?

Правка: Для довідки, ось модуль, який я завантажив


ваш пакет використовує node-gyp? Я думаю, що виклик no-bin-links пов'язаний, якщо так.
jcollum

Ні, немає коду в модулі. Ось джерело модуля для довідки.
giodamelio

1
--no-bin-linksПросто зупиняється НПМ з файлів в символічне посилання на package.json в binхеш по шляху на глобальній установці.
giodamelio

Арг, я напевно раніше натрапив на це, але не можу пригадати, чому ... дам вам знати, якщо це спливе мені в голову.
jcollum

@jcollum Дякую, це насправді дуже засмучує, я перевірив все мільярд разів, але я все ще не можу не відчути, що я пропустив щось просто дурне. Це чи, може, це якась дивна помилка.
giodamelio

Відповіді:


133

Гаразд, схоже, що NPM використовує ваш .gitignoreяк базу для .npmignoreфайлу, і таким чином ігнорує /lib. Якщо ви додасте порожній .npmignoreфайл у корінь програми, все має працювати.

[редагувати] - більше інформації про таку поведінку тут: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package


Дарн, так і повинно бути. Це здається дещо заплутаним способом робити справи. Зараз не за комп’ютером, але спробую це через кілька годин.
giodamelio

3
3 години розчарування зійшли на один рядок у моєму .gitignore, що вироджувало npm install -g. Божевільний
Брайан

2
'тип NUL> .npmignore' для windows
Кабір

1
Станом на npm @ 5, кеш-пам'ять npm самолікується від проблем з корупцією та дані, витягнуті з кешу, гарантовано є дійсними. Якщо ви хочете переконатися, що все відповідає, замість цього використовуйте 'npm cache verify'.
Abhijeet

1
видалити файл package-lock.json
FennRussel

107

Я зіткнувся з подібною проблемою,

npm cache clean

вирішили це.


11
Я спробував, npm cache verifyі це спрацювало. дякую за підказку
Джейкрат

Станом на npm @ 5, кеш-пам'ять npm самолікується від проблем з корупцією та дані, витягнуті з кешу, гарантовано є дійсними. Якщо ви хочете переконатися, що все відповідає, замість цього використовуйте 'npm cache verify'. З іншого боку, якщо ви налагоджуєте проблему з інсталятором, ви можете використовувати npm install --cache /tmp/empty-cacheтимчасовий кеш, а не видаляти з нього фактичний.
Даніель ЗА

9

Ця проблема якось виникла у мене на Mac, коли я намагався запустити npm install -g bower. Це дало мені ряд помилок за те, що я не зміг знайти такі речі, як витончені фс. Я не впевнений, як я встановив npm спочатку, але схоже, можливо, він зійшов із вузлом за допомогою homebrew. Я перший побіг

brew uninstall node

Це усунуло nodeі npmмій шлях. Звідти я просто перевстановив його

brew install node

Коли це закінчилося, я мав nodeі npmна своєму шляху, і я зміг бігти

rm -rf ~/.npm
npm install -g bower

Потім цей бункер успішно встановлений.

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

npm cache clean
sudo npm cache clean

9

Я отримував цю помилку при встановленні npm і додавання .npmignore не вирішив її.

Помилка: ENOENT, stat 'C: \ Користувачі \ Моє ім'я користувача \ AppData \ Роумінг \ npm'

Я спробував перейти до згаданої папки, і її не було. Помилка була виправлена, коли я створив папку npm у папці Роумінг .

Це в Windows 8.1


4

У мене була така ж проблема, і я просто знайшов обробку, про яку не згадували. Хоча я б сприяв спільноті:

npm install -g myappне копіював binкаталог. Я вважав, що це так, тому що я не включав його до filesсвогоpackage.json

"files": [
  "lib",
  "bin" // this was missing
]

Отримав те саме питання, і ця відповідь була для мене єдиним хорошим виправленням. Причиною стало те, що я отримав filesключ у своєму package.jsonзаписі, наприклад, index.jsта LICENSE, але не binпапці. Так воно працює, якщо filesключа взагалі немає або якщо є filesключ І binпапка в.
Ремі Бехерас

Дякую, це допомогло мені відклеїтись. Одного разу ви вказали, що каталог бін не входить у файли, я подумав "о! Звичайно!". Тоді я повернувся до документів, щоб побачити, чи не пропустив це, і це не згадується (принаймні, не в npm-блозі, який я читав). Принаймні я не божевільний: P. Дякую за допомогу!
Кріс Шмітц

4

Я отримував подібну помилку при npm installлокальній установці:

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

Я не впевнений, що викликало помилку, але нещодавно я встановив пару нових модулів вузлів локально, оновив вузол з домашньою мовою та запустив 'npm update -g'.

Єдиний спосіб мені вдалося вирішити проблему - повністю видалити локальний каталог node_modules і запустити npm installзнову:

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install

4

У мене є специфічна проблема: ERR! enoent ENOENT: немає такого файлу чи каталогу, chmod 'node_modules / npm / node_modules / request / node_modules / http-підпис / node_modules / sshpk / bin / sshpk-conv Я спробував усі вищевикладені рішення, але не пощастило. Я використовував бродячий ящик, і проект знаходився в загальній папці. Здається, проблеми існують лише там, коли я переміщую проект в іншу спільну папку (woth host), voila! проблема вирішена. Про всяк випадок, якщо інша людина використовувала бродячі


Ти розбудив мене від кошмару, tnx! У мене є 2 доповнення: 1.) Перестаньте використовувати npm, використовуйте Пряжу. 2.) Запустити npm зі свого пристрою HOST, а не VM.
Flip Vernooij

3

Я отримав аналогічне повідомлення про помилку, намагаючись npm installкупу залежності. Виявляється, деякі з них не вдається встановити на Debian / Ubuntu, тому що вони очікують /usr/bin/nodeвиконання цього вузла. Щоб виправити, вам потрібно зробити

sudo ln -s nodejs /usr/bin/node 

або ще краще,

sudo apt-get install nodejs-legacy

Для отримання додаткової інформації: https://stackoverflow.com/a/21171188/7581


3

Я зіткнувся з подібною поведінкою після оновлення до npm 6.1.0. Здавалося, працював один раз, але потім я потрапив у стан із цією помилкою, намагаючись встановити пакет, який був визначений шляхом у файловій системі:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

Наступні речі не вирішили проблему :

  • rm -rf node_modules
  • npm cache clean(дав npm ERR! As of npm@5, the npm cache self-heals.... use 'npm cache verify' instead.)
  • npm cache verify
  • rm -rf ~/.npm

Як виправити проблему :

  • rm package-lock.json

2

Я думаю, що у вашому складеному сценарії кави відсутній у опублікованому пакеті npm. Спробуйте написати команду перед публікацією .


Ні, папка lib була там, коли я її опублікував. Крім того, я отримую ту ж помилку, коли намагаюся встановити з локальної папки. Навіть коли там папка lib.
giodamelio

1
@giodamelio Я погоджуюся з Райаном на цьому. Помилка говорить про те, takeapeek/lib/cmd.jsщо не існує. Навіть незважаючи на те, що папка lib може бути "там" під час публікації, вона не буде "там" при встановленні через npm, якщо вона не є частиною сховища, або якщо ви не використовуєте prepublish для її створення.
badsyntax

2

У моєму випадку (декілька код ENOENT errno 34) проблема була з ~/.npm/доступом до каталогу. Всередині нього були деякі підкаталоги, які мали root:rootправа, які створювали проблеми, коли я запускаю команди як звичайний користувач (без sudo). Тому я змінив право власності на всі підкаталоги та файли всередині ~/.npm/dir на свого місцевого користувача та групи. Це зробило трюк на моєму Ubuntu (на Mac теж повинен працювати).

$ sudo chown yourusername.yourgroupname ~/.npm/ -R

Ви повинні знати своє ім’я користувача, правда? Якщо ні, то запустіть $ whoamiі замініть ім’я вашої групи також таким чином:

$ sudo chown johnb.johnb ~/.npm/ -R

Редагувати:

Тестовий випадок :

З мого локального акаунта /home/johnbя npm-встановив глобально якийсь генератор для yeoman, наприклад, такий:

$ sudo npm install -g generator-laravel

Характер проблеми :

Вищенаведені дії спричинили встановлення деяких залежностей всередині ~/.npm/dir, що володіють root:rootправом власності (через sudo ...). Очевидно, що npm не запускається як локальний користувач (або після цього зміни залежать від власності), коли витягуєте залежності та записуєте їх у підкаталог користувача ~/.npm/. Поки npm буде настільки необережним щодо основних проблем безпеки файлової системи Unix, проблема знову виникне.

Рішення :

  1. Постійно перевіряйте, чи ~/.npm/містять підкаталоги з правом власності (та / або дозволи), крім вашого локального облікового запису користувача, особливо коли ви встановлюєте чи оновлюєте щось за допомогою sodo(root). Якщо так, то змініть право власності всередині ~/.npm/на місцевого користувача рекурсивно.

  2. Попросіть npm, bower, grunt, ...громаду, щоб вони вирішили це питання, як я описав його вище.


2

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

npm install -g npm

1

Я спробував усі речі, які я знайшов у мережі ( npm cache clearі rm -rf ~/.npm), але, здається, нічого не виходить . Що вирішило проблему, було оновлення вузла (і npm) до останньої версії. Спробуйте це.


1

У Windows у мене була подібна помилка. Пошук вставте Дані програми та знайдіть рядок npm.

Я замінив рядок 'npm'(включаючи цитати) на 'npm.cmd'в обох atlasboard\lib\package-dependency-manager.jsта atlasboard\lib\cli\commands.js. Це вирішило проблему.


1

Та сама помилка під час глобальної установки ( npm install -g mymodule) для пакету з неіснуючим сценарієм.

У package.json:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

Але ./bin/moduleне існувало, як було названо modulejs.



1

Ви можете отримати цю помилку, якщо ваш node.js якось пошкоджений. Я виправив цю помилку, видаливши / перезапустив / встановив node.js повністю, і він виправив цю помилку разом з трьома іншими таємничими помилками, які викидаються.


1

Будьте обережні з недійсними значеннями ключів "каталоги" та "файли" в package.json

Якщо ви почнете з нової програми, і ви хочете почати повністю порожньо, вам доведеться або запустити в повну порожню папку, або мати в ній дійсний файл package.json.

Якщо ви не хочете спочатку створити файл package.json, просто введіть: npm i some_package

Пакет із назвою "some_package" повинен бути правильно встановлений у новій підпапці "node_modules".

Якщо спершу ви створите файл package.json, введіть: npm init Зберігайте всі параметри за замовчуванням (натиснувши клавішу ENTER), вам слід отримати дійсний файл.

Це повинно виглядати так:

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

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

Також зверніть увагу на клавішу " основний ". Цей присутній, але він містить недійсне значення. Немає файлу "index.js" (поки що). Ви можете сміливо її видалити.

Тепер введіть: npm i some_package і пакунок з назвою "some_package" повинен бути встановлений правильно в новій підпапці "node_modules".


1

Спробував майже все, нарешті, це:

Просто видаліть node_modules, а потім запустіть 'npm install'знову


0

У мене була аналогічна проблема з іншою причиною: yo nodeгенератор додав "files": ["lib/"]до мене, package.jsonі оскільки мій cli.jsбув поза lib/каталогом, він пропускався при публікації в npm.

(Проблема Yeoman за адресою https://github.com/yeoman/generator-node/isissue/63 її слід незабаром виправити.)


0

Я отримував помилку "Помилка: ENOENT, stat 'C: \ Users \ userName \ AppData \ Roaming \ npm". Але такого каталогу не було. Створили каталог і npm установка почала працювати


0

Нещодавно я оновлений до вузла 4.2.1 на машині Windows 7 x64. При бігу

npm install -g bower

У мене схожа помилка:

npm ERR! enoent ENOENT: немає такого файлу чи каталогу, відкрийте "C: \ Користувачі \ THE_USERNAME \ AppData \ Local \ Temp \ npm-THE_HASH"

Думаючи, що це було пов'язано зі шляху AppData, я розігрувався

npm config edit

і

npm config edit --global

щоб змінити поля префікса, кеша та tmp, але отримали однакову помилку з новими шляхами:

npm ERR! enoent ENOENT: немає такого файлу чи каталогу, відкрийте "C: \ Users \ THE_USERNAME \ npm-temp \ npm-THE_HASH"

Усі команди виконувались як адміністратор, тому я мав повні дозволи.

Тоді я подумав, що існують деякі проблеми з існуючими файлами, тому я побіг:

npm cache clean

Але отримав таку ж помилку. Однак, все ще було кілька тимчасових файлів. Видалення всіх темп-даних за допомогою cygwin вручну усунуло проблему для мене:

rm -rf bower bower.cmd node_modules etc

Якщо у вас тільки Windows cmd, ви можете використовувати щось на кшталт

rmdir /S THE_TEMP_DIR

видалити всі підкаталоги (хоча якщо у вас глибоко вкладені залежності вузлів, це сумно проблематично)

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


0

Під час встановлення ionic я потрапив нижче помилки

115648 помилка enoent ENOENT: немає такого файлу чи каталогу, перейменуйте 'C: \ Користувачі \ Ім'я користувача \ AppData \ Роумінг \ npm \ node_modules.staging \ ansi-b11f0c4b' -> 'C: \ Users \ UserName \ AppData \ Roaming \ npm \ node_modules \ ionic \ node_modules \ cordova-lib \ node_modules \ ansi '

На ansiцьому шляху не було викликано папки . Я створив його там і встановив правильно.


0

Якщо ви спробували "зробити встановлення" в каталозі свого проекту з цією помилкою, ви можете спробувати:

rm -rf ./node_modules
npm cache clear
npm remove sails

то ви можете спробувати "зробити встановлення"

Якщо у вас є "npm ERR! Enoent ENOENT: немає такого файлу чи каталогу, chmod '... / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js'", ви можете спробувати встановити деяка попередня версія js-beautify, більше коментарів: https://github.com/beautify-web/js-beautify/isissue/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

і запустіть "make install". Схоже, це працює в тому випадку, якщо у вас немає інших залежностей, для яких потрібна вища версія (1.7.0), у цьому випадку ви повинні знизити ці пакети також у пакетах.json.

або


0

Ніщо з вищезазначеного не працювало для мене. Але yarn installпопрацював, потім npm iпочав працювати. Не впевнений, що фіксує пряжу, але швидке та просте рішення!


0

Спочатку зробіть

 npm rm -rdf node_modules

то зробіть

npm install

Після цього встановіть усі файли, які ви хочете додати


0

Була аналогічна помилка з npm у контейнері docker для webpack. Проблема була викликана аргументом командного рядка --user про запуску докера, оскільки даний користувач та група там якось переплутали права на локальний том. Сподіваюся, це комусь допоможе :)


-3
Creating a new React app in C:\Users\CM\Downloads\react\github-profile.
Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts...

npm ERR! path C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 

v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335b1
0893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806

npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall lstat
npm ERR! Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6
5545008a3cad93d00f806'
npm ERR! { [Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1f 
a335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec6554500
8a3cad93d00f806']

npm ERR! cause:
npm ERR! { Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1
fa335b10893d67f7339e4 
af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93d00f806'
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 


npm ERR! stack:
npm ERR! 'Error: EPERM: operation not permitted, lstat 
'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996
b1fa335b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015
eec65545008a3cad93d00f806'',
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'lstat',
npm ERR! path:
npm ERR! 'C:\Users\CM\AppData\Roaming\npm-cache\_cacache\content- 
v2\sha512\36\c6\c3e97514319bc1c6d40026e58325e782e1016c996b1fa335
b10893d67f7339e4af62bb688c0da2aaca839d4c9d51e2eb015eec65545008a3cad93
d00f806',
npm ERR! parent: 'postcss-image-set-function' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a
text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double- 
check thenpm ERR! permissions of the file and its containing directories, or 
try  running

npm ERR! the command again as root/Administrator (though this is not 
recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\CM\AppData\Roaming\npm-cache_logs\2019-03-22T10_
27_19_722Z-debug.log


Aborting installation.
npm install --save --save-exact --loglevel error react react-dom react- 
scripts   has failed.

Deleting generated file... node_modules
Deleting generated file... package.json
Deleting GitHub-profile/ from C:\Users\CM\Downloads\reactDone.``

Я стикався з подібною помилкою, але я багато разів намагався запустити команду create-react-app і, нарешті, вона була створена, це була проблема з моїм підключенням до Інтернету. перевірити підключення до Інтернету


-16

Спробуйте це

SET HTTP_PROXY=<proxy_name>

Потім спробуйте цю команду. Вона буде працювати


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