Команда NPM не найдена после установки узла

Мне очень трудно заставить команду npm работать, и, к сожалению, моих знаний о Unix недостаточно, чтобы решить эту проблему самостоятельно. Все, что я сделал, это brew install node, и я получаю следующие ошибки:

Когда я набираю npm, я получаю zsh: command not found: npm

Изучая эту проблему больше, я нашел этот ответ на переполнение стека:

Команда не найдена после установки npm в zsh

Следуя его совету, я попытался добавить export PATH=/usr/local/share/npm/bin:$PATH в свой файл .zshrc. По-прежнему получаю ту же ошибку при вводе npm

Я могу подтвердить, что он находится на пути echo $PATH, дает /Users/nicholashaley/.rbenv/shims:/Users/nicholashaley/.rbenv/bin:/Applications/Postgres.app/Contents/Versions/9.3/bin:/usr/local/heroku/bin:/usr/local/share/npm/bin:/usr/local/bin:/Applications/Postgres.app/Contents/Versions/9.3/bin:/usr/local/heroku/bin:/Users/nicholashaley/.rbenv/shims:/usr/local/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

Я также могу подтвердить, что узел был установлен node -v дает v0.12.2

Любые идеи? я в тупике


person Nicholas Haley    schedule 23.09.2015    source источник
comment
Удаление и переустановка Node не сработали, поэтому я удалил каталог /usr/local/lib/node_modules (с помощью sudo rm -rf /usr/local/lib/node_modules).   -  person Warren P    schedule 19.02.2017


Ответы (8)


Не ответ, но, возможно, решение...

Удалить Node через brew: brew uninstall node

Затем загрузите Node с https://nodejs.org/en/download/ и установите.

npm должен "просто работать".

person Adrian Lynch    schedule 23.09.2015
comment
Это чистое золото. Благодарю вас! - person Sonic Master; 30.12.2016
comment
перед тем, как попробовать это, я попробовал brew postinstall, но не сработал, вышеописанный метод лучше, потому что вместе с узлом он также заботится о npm, большое спасибо - person Pravin Waychal; 08.02.2017
comment
Это не сработало, но как только я sudo rm -rf /usr/local/lib/node_modules сразу после удаления все заработало. - person BrotherDonkey; 28.01.2018

Я столкнулся с этой темой с той же проблемой, но, наконец, ниже показано, что сработало для меня без sudo

$ brew update
$ brew uninstall node
$ brew install node
$ chown -R YourUserName /usr/local/lib/node_modules/
$ brew postinstall node #This what the important step
person Venkat.R    schedule 29.02.2016
comment
в моем случае postinstall запрашиваю права sudo, а brew не нравится :( - person Volatil3; 15.05.2016
comment
это помогает, но я должен сделать stackoverflow.com/questions/23400073/ перед последним шагом - person yanik; 27.05.2016
comment
Ошибка: /usr/local недоступен для записи. Вы должны изменить владельца и разрешения /usr/local обратно на свою учетную запись пользователя: - person Rajesh Maurya; 03.05.2018
comment
@Venkat.R Большое спасибо, братан. Я новичок в Mac, и вы сэкономили много времени. - person Abhishek Shukla; 03.07.2019
comment
Для команды chown мне нужно было добавить к ней префикс sudo, иначе операция не разрешена. Это исправило мой доморощенный установленный node/npm, спасибо. - person JulianHarty; 17.07.2019

Хорошо, это то, что сработало для меня:

$ brew update
$ brew uninstall node
$ brew install node
$ sudo brew postinstall node #This what the important step
person Nicholas Haley    schedule 23.09.2015
comment
sudo brew не выглядит хорошей идеей... Вот ошибка, которую я получаю: Error: Cowardly refusing to `sudo brew postinstall` You can use brew with sudo, but only if the brew executable is owned by root. However, this is both not recommended and completely unsupported so do so at your own risk. - person Litome; 05.11.2015
comment
^ согласен - вам не нужно запускать $ sudo brew .... - person Andrew Hendrie; 17.02.2016
comment
Я также столкнулся с той же проблемой. Точно сказать не могу. после выполнения 3 шагов. все еще моя команда npm не найдена - person Venkat.R; 01.03.2016
comment
без sudo 4-й команды решил мою проблему. позвольте мне обновить как отдельный ответ для справки - person Venkat.R; 01.03.2016
comment
В моем случае мне нужно было постустановить точную версию: brew postinstall homebrew/versions/node4-lts; - person ownking; 09.06.2016
comment
postinstall помог мне, но sudo не нужен. вместо этого отправьте недоступные файлы/каталоги своему собственному пользователю-администратору (me:admin). - person yair; 22.02.2017

В случае, если это так и не было решено, это то, что сработало для меня:

  1. brew uninstall node
  2. brew install node
  3. brew doctor и посмотреть, что нужно обрезать. Моя проблема заключалась в том, что было не варочное место, где я изменил место установки для пакетов npm, потому что пытался получить пакет npm для установки для меня. Это была ошибка (забыв, что я изначально установил node и npm через brew, но теперь brew больше не мог получить доступ к каталогу установки npm, а также не мог изменить или удалить его). Итак, brew prune не сработало, хотя символические ссылки якобы были удалены, но это напомнило мне, что я изменил место установки npm. И это подводит нас к:

  4. Удалить эти каталоги

  5. brew postinstall node

Надеюсь, поможет.

person keaglin    schedule 04.06.2016

Я нашел эту статью полезной с пошаговыми инструкциями:
https://www.dyclassroom.com/howto-mac/how-to-install-nodejs-and-npm-on-mac-using-homebrew

Кроме того, после всех шагов, описанных выше, узел работал, но моя машина все еще выдавала «команда не найдена: npm». Затем я выполнил следующие две команды, и npm заработал.

sudo chown -R myusername:myusergroup /usr/local/lib/node_modules
brew postinstall node
person Vaibhav Rathore    schedule 03.06.2019
comment
Это прекрасно работает. иногда узел brew postinstall не запускается. Итак, после запуска первой команды node -v даст вам правильную версию узла, однако вы будете использовать npm, и он вернет npm, не найденный при попытке выполнить команду npm. brew postinstall node исправит это для вас - person Balu; 26.03.2020

Любой пользователь версии LTS вместо этого использует следующую команду:

brew postinstall node@6
person mils    schedule 09.05.2017

Подробная информация о проблеме в Gist и как я ее исправил

  1. Installed nodeJs via nvm using Git Bash
  2. Installed hyper terminal & WSL
  3. Installed Ubuntu (windows Store) & configured zsh shell. 
  4. Faced the command not found all over in the zsh shell
  5. The same commands are working nicely in the bash shell

Попытался найти пути (node, nvm, npm ) в файлах .zshrc и .profile и изменить переменные системы и среды в Windows. Ни один из этих шагов не помог мне решить проблему.

Я думаю, проблема в том, что терминалы zsh и bash относятся к вещам по-разному. При установке в терминале bash местоположение по умолчанию для nodeJs в окнах будет установлено на

C:\Users\Program Files\nodejs

Приведенный выше символ связан с C:\Users\<username>\AppData\Roaming\nvm

Сколько бы я ни пытался алиасить эти вещи в zsh, только node и nvm работают с алиасами. npm не может найти необходимые файлы lib.

Единственное решение, которое сработало для меня, — это переустановка узла в терминале zsh.

  1. Удалены версии узлов, установленные через nvm в терминале Bash.
  2. Удалил nvm в windows через панель управления
  3. Установил nvm в оболочку zsh
  4. Установлена ​​последняя LTS-версия узла, из которой также установлен npm.

Сообщение Установка ноды через nvm в Zsh заметил следующие вещи.

  1. Пути для узла, nvm, npm и npx автоматически добавляются в переменную $PATH.
  2. Каталог узла недоступен ни в C:\Users\Program Files\nodejs, ни в C:\Users\{username}\AppData\Roaming\nvm
  3. Вместо этого он настроен по-другому в /home/<username>/.nvm/versions/node/v14.15.1/bin/node

Это видео очень помогло мне в переустановке узла в ZSH: https://www.youtube.com/watch?v=kL8iGErULiw

person Rahul Kodumuru    schedule 15.12.2020

Обычно npm должен находиться в том же каталоге, что и исполняемый файл node, который можно определить с помощью which node. Проверьте, не является ли этот каталог частью вашего PATH. Если узел был установлен через диспетчеры версий узлов, такие как nodenv и nvm, проверьте в документации, как добавить эти исполняемые файлы в путь.

С nodenv это можно сделать с помощью:

eval "$(nodenv init -)"
person ealfonso    schedule 29.01.2021