ошибки установки npm с ошибкой: ENOENT, chmod

Я пытаюсь глобально установить модуль 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

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

  • обновление npm (sudo npm install -g npm)
  • очистить глобальный кэш npm (sudo npm cache clear)
  • очистить кэш npm пользователя (npm cache clear)

Я заметил, что ошибка связана с файлом, который я связываю с путем, в частности, когда npm пытался сделать chmod. Это не должно быть проблемой, мой lib/cli.js имеет обычные разрешения, и npm имеет разрешения суперпользователя во время этой установки.

после копания в документах npm я нашел вариант, который остановил бы npm от создания ссылок bin(--no-bin-links), когда я попробовал установить с ним, он работать отлично.

так в чем же дело? Это какой-то странный случай бахромы ошибка это еще не решение?

Edit: для справки,здесь модуль я загрузил

24 ответов


Ok похоже, что NPM использует ваш .gitignore в качестве основы для , и, таким образом, игнорирует /lib. Если вы добавите пробел .npmignore файл в корень вашего приложения, все должно работать.

[edit] - дополнительная информация об этом поведении здесь:https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package


я столкнулся с подобной проблемой,

npm cache clean

ее решили.


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

brew uninstall node

это удалило оба node и npm С моего пути. Оттуда я просто переустановил его

brew install node

когда он закончил, у меня было node и npm на моем пути и я смог бежать!--11-->

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

это затем успешно установлено bower.

обновление формул заваривания и обновление установок, похоже, не работали для меня, я не уверен, почему. Удаление .npm папка была чем-то, что работало для других людей, и я пробовал это без успеха. На этот раз я сделал это на всякий случай. Обратите внимание также, что ни одно из следующих решений не решило проблему для меня, хотя и для других:

npm cache clean
sudo npm cache clean

Я получал эту ошибку при установке и добавлении npm .npmignore не решил его.

ошибка: ENOENT, stat 'C:\Users\My-UserName\AppData\Roaming\npm'

Я попытался перейти в указанную папку, и ее не существовало. Ошибка была исправлена, когда я создано npm на роуминг.

Это на Windows 8.1


у меня была та же проблема, и просто нашел обработку, не упомянутую здесь. Хотя я бы внес свой вклад в сообщество:

npm install -g myapp не копируя


Я получил аналогичное сообщение об ошибке при попытке 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


Я получал аналогичную ошибку на npm install при локальной установке:

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

Я не уверен, что вызвало ошибку, но недавно я установил пару новых модулей узла локально, обновил узел с homebrew и запустил "npm update-g".

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

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

Я думаю, что ваш скомпилированный сценарий кофе отсутствует в опубликованном пакете npm. Попробуйте написать prepublish.


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

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

вы должны знать свое имя пользователя, верно? Если нет, то запустите $ whoami и замените свое имя группы с ним тоже, как это:

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

EDIT:

тест:

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

$ sudo npm install -g generator-laravel

природа:

выше действие вызвало некоторые зависимости, устанавливаемые внутри ~/.npm/ реж, имеющего root:root собственности (из-за sudo ...). Очевидно, npm не работает как локальный пользователь (или изменения зависимостей подкаталоги после собственности), когда тянет зависимостей и записи их на локальный каталогом пользователей ~/.npm/. До тех пор, пока npm будет настолько небрежен в отношении фундаментальных проблем безопасности файловой системы unix, проблема повторится.

решение:

  1. Continuosly проверить, если ~/.npm/ содержит подкаталоги с правом собственности (и/или разрешений) кроме вашей локальной учетной записи пользователя, особенно, когда вы установить или обновить что-либо с sodo (root). Если это так, измените владельца внутри ~/.npm/ для локального пользователя рекурсивно.

  2. задать npm, bower, grunt, ... сообщество, что они решают эту проблему, как я описал выше.


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

npm install -g npm

У меня есть аналогичная проблема specifucally : ERR! ENOENT enoent: нет такого файла или каталога, то chmod 'папки node_modules/НПМ/папки node_modules/запрос/папки node_modules/и HTTP-подпись/папки node_modules/sshpk/ОГРН/sshpk-сопу Я перепробовал все решения, но не повезло. Я использовал vagrant box, и проект был в общей папке. Проблемы, кажется, только там, когда я переместить проект в другую, не общую папку (с хозяином), вуаля! проблема решена. На всякий случай другой человек использовал также vagrant


Я пробовал все, что нашел в сети (npm cache clear и rm -rf ~/.npm), но ничего не работает. Проблема была решена путем обновления узла (и npm) до последней версии. Попробовать это.


в Windows у меня была аналогичная ошибка. Поиск вставить данные приложения и поиск строки npm.

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


та же ошибка во время глобальной установки (npm install -g mymodule) для пакета с несуществующим скриптом.

в пакет.в JSON:

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

но ./bin/module не существовало, как его называли modulejs.


  1. установить последнюю версию node
  2. Run: npm cache clean
  3. Run: npm установить cordova-g

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


я столкнулся с подобным поведением после обновления до 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

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

(выпуск Йомена в https://github.com/yeoman/generator-node/issues/63 это должно быть исправлено в ближайшее время.)


Я получал ошибку " Ошибка: ENOENT, stat 'C:\Users\userName\AppData\Roaming\npm". Но такого справочника не было. Создал каталог, и установка npm начала работать


недавно я обновился до узла 4.2.1 на машине Windows 7 x64. При запуске

npm install -g bower

я получил аналогичную ошибку:

НПМ ERR! enoent ENOENT: нет такого файла или каталога, откройте 'C:\Users\THE_USERNAME\AppData\Local\Temp\npm-THE_HASH'

думая, что это связано с путем AppData, я играл с

npm config edit

и

npm config edit --global

изменить префикс, кэш и tmp поля, но получил ту же ошибку с новыми путями:

НПМ 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 или других пакетов, висящих вокруг. В моем случае это казалось проблемой


при установке ionic я получил ниже ошибки

115648 ошибка enoent ENOENT: нет такого файла или каталога, переименовать 'C:\Users\UserName\AppData\Roaming\npm\node_modules.постановка\ansi-b11f0c4b' - > 'C:\Users\UserName\AppData\Roaming\npm\node_modules\ionic\node_modules\cordova-lib\node_modules\ansi'

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


Если вы пытались "сделать установку" в каталоге проекта с этой ошибкой, вы можете попробовать:

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

затем вы можете попробовать, чтобы "установить"

Если у вас есть " npm ERR! enoent ENOENT: нет такого файла или каталога, chmod '.../джем-бэкэнд/папки node_modules/Яш-украсить и JS/ОГРН/УСБ-украсить.js' " затем вы можете попробовать установить некоторую предыдущую версию js-beautify, больше комментариев: https://github.com/beautify-web/js-beautify/issues/1247

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

и выполнить "make install". Кажется, это работает, если у вас нет других зависимостей, требующих более высокой версии (1.7.0), в этом случае вы должны понизить эти пакеты также в пакетах.формат JSON.

или


ничего из вышеперечисленного не сработало для меня. Но!--0--> работала, потом npm i начал работать. Не уверен, что пряжа исправлена, но быстрое и простое решение!


пожалуйста, попробуйте это

SET HTTP_PROXY=<proxy_name>

затем попробуйте эту команду.Это сработает