Получение npm: команда не найдена. Как переустановить NPM, если Node уже установлен? Куда делся НПМ?

Я начинаю научиться создавать современные веб-приложения с помощью руководства по AngularJS и очень рано сталкиваюсь с проблемами.

У меня установлен узел:

/path/ang-news node -v
v0.10.26

Раньше я использовал NPM, но у меня были проблемы с Йоменом. Я повторил эти шаги некоторое время назад, но Grunt перестал работать, поэтому я начал все заново.

Я побежал:

$ sudo npm install -g generator-angular

и все зависимости устанавливались, пока я не получил:

npm WARN package.json [email protected] No repository field.
npm ERR! peerinvalid The package generator-karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants generator-karma@>=0.8.2

Затем я попытался обновить:

$ npm update -g

Я должен был запустить это как администратор. Я получил массу сообщений об ошибках, это казалось наиболее подходящим:

npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 13.1.0
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "update" "-g"
npm ERR! cwd /path/ang-news
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3

npm ERR! not ok code 0

Затем я попытался удалить генератор-карму и начать все заново:

$ sudo npm uninstall -g generator-karma

но получил:

sudo: npm: command not found

$ npm -v
-bash: /usr/local/bin/npm: No such file or directory

Первый вопрос: почему внезапно исчез NPM?

[РЕДАКТИРОВАТЬ: Престижность @ try-catch-finally за указание на хаос, который происходит при переключении между обычным пользователем и sudo при выполнении команд. Оказывается, я испортил свою пользовательскую среду, и NPM больше не был установлен.]

Насколько я понимаю, NPM устанавливается при установке Node, поэтому мой второй вопрос: как переустановить только NPM? Я бы предпочел не переустанавливать Node с самого начала.

[РЕДАКТИРОВАТЬ: Престижность @hawk и @ try-catch-finally - не похоже, что установка только NPM является вариантом, но есть простые способы переустановить оба.]


person Rotimi    schedule 24.06.2014    source источник
comment
Я не думаю, что это возможно. Единственно возможный ответ - полностью переустановить узел.   -  person hawk    schedule 24.06.2014
comment
@hawk Спасибо. Это позор. Было бы здорово выяснить, как и почему это произошло, чтобы избежать этого в будущем.   -  person Rotimi    schedule 24.06.2014
comment
Почему вы перепутали команды обычного пользователя и root? $ npm update -g, как вы написали, выглядит неправильно, если вы имеете дело с глобальными пакетами, вам также нужно запустить это как root. Забавно: затем вы использовали sudo, но выполнили другую команду npm. Может, вы испортили пользовательскую среду? Не могли бы вы проверить, что /usr/local/bin/npm действительно не существует? Пожалуйста, попробуйте find /usr это. Об исходной ошибке Peer [email protected] wants generator-karma@>=0.8.2: Похоже, ребята из generator-angular обновили зависимости, которых нет в репо (я сталкивался с такими проблемами).   -  person try-catch-finally    schedule 24.06.2014
comment
@ try-catch-finally Я перепутал команды как обычный пользователь и root, потому что я новичок в этом и рассеянный :). $ find/usr npm -bash: find/usr: No such file or directory` Приятно знать, что я не единственный, кто сталкивается с проблемами с обновленными зависимостями, которых нет в репо. Спасибо!   -  person Rotimi    schedule 24.06.2014
comment
@Rotimi: +1 за то, что выяснил причину, по которой этого нельзя делать в будущем! К сожалению, если что-то действительно испортилось, вам нужно будет переустановить, а затем попытаться воспроизвести свои действия, наблюдая за системой. : / - Вы построили node + npm самостоятельно, используя ./configure; make; make install? Кому принадлежит /usr/local/bin/npm? root.root?   -  person try-catch-finally    schedule 24.06.2014
comment
find /usr (пробел между find и путем)! Пожалуйста, подумайте;) Пожалуйста, также введите whereis node и whereis npm, чтобы показать весь путь, предоставляющий node и npm. --- Пожалуйста, добавьте свои наблюдения к своему сообщению, отредактировав его!   -  person try-catch-finally    schedule 24.06.2014
comment
Спасибо, отредактировал пост. Я не уверен, что понимаю, как использовать команды whereis. Что касается ./configure; делать; make install, это первый вариант в этой ссылке?   -  person Rotimi    schedule 24.06.2014


Ответы (3)


  1. Если у вас есть рабочий узел, вы можете переустановить npm

curl -L https://npmjs.org/install.sh | sudo sh

  1. К сожалению, npm update -g не делает того, чего никто не ожидает. Исправление этого находится в дорожной карте npm, но это займет некоторое время.

  2. Вам почти никогда не нужно устанавливать пакет глобально, если (например, generator-angular или grunt-cli) вы не хотите использовать этот пакет как команду.

person Sam Mikes    schedule 21.11.2014

На всякий случай, если вы сделали это с brew, я рекомендую эту статью на github. Сэкономит много времени.

https://gist.github.com/DanHerbert/9520689

Исправление npm в Mac OS X для пользователей Homebrew Выполните следующие команды, чтобы удалить все существующие глобальные модули npm, удалить узел и npm, переустановить узел с правильными значениями по умолчанию, установить npm как собственный пакет и настроить расположение для глобальных модулей npm. быть установленным.

rm -rf /usr/local/lib/node_modules
brew uninstall node
brew install node --without-npm
echo prefix=~/.node >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sh

На этом этапе необходимо правильно установить Node и npm. Последний шаг - добавить ~ / .node / bin в ваш PATH, чтобы команды, которые вы устанавливаете глобально, можно было использовать. Я добавил эту строку в свой сценарий ~ / .path, который запускается через ~ / .bash_profile. Выполните следующую строку как есть.

export PATH="$HOME/.node/bin:$PATH"
person alphapilgrim    schedule 09.12.2015
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из отзыва - person Valentin Lorentz; 09.12.2015
comment
@ValentinLorentz мои извинения, есть обновление. Дайте мне знать, если это хорошо выглядит. - person alphapilgrim; 09.12.2015

Я столкнулся с той же проблемой после выполнения команды для установки последней версии npm на redhat 7.1:

    npm install npm@latest -g

после нескольких попыток я нашел решение:

    yum reinstall npm

Надеюсь, это поможет пользователям redhat / centos.

person Zhi Yuan    schedule 24.11.2017