it-roy-ru.com

Как исправить "yo: команда не найдена" после установки Yeoman

Следуя этим инструкциям, я попытался установить yeoman, используя npm дважды: http://yeoman.io/learning/index.html

После первого сбоя я удалил узел, используя следующие инструкции: Как мне полностью удалить Node.js и переустановить с начала (Mac OS X) Затем я установил nvm и узел/npm (через nvm) с одной ошибкой: 

[Yeoman Doctor] Uh oh, I found potential errors on your machine
---------------

[Error] NPM root value is not in your NODE_PATH
  [info]
    NODE_PATH = /Users/joanna/.nvm/v0.10.22/lib/node_modules:.
    NPM root  = /Users/joanna/.node/lib/node_modules

  [Fix] Append the NPM root value to your NODE_PATH variable
    Add this line to your .bashrc
      export NODE_PATH=$NODE_PATH:/Users/joanna/.node/lib/node_modules
    Or run this command
      echo "export NODE_PATH=$NODE_PATH:/Users/joanna/.node/lib/node_modules" >> ~/.bashrc && source ~/.bashrc

Я вставил эту команду, а затем снова запустил npm install -g yo

После повторения инструкций с сайта йомена он все еще не может найти йомана. Я получаю эту ошибку: - bash: yo: команда не найдена

Что случилось? Йоменский доктор говорит: «Все выглядит хорошо!»

29
Joanna Marsden

Источник проблемы в том, что у вас установлен NODE_PATH при одновременном использовании NVM. Когда вы используете NVM, у вас вообще не должно быть переменной NODE_PATH, так как NVM устанавливает глобальные пакеты в корне, зависящем от версии.

Удалите все пакеты, которые есть в вашем NODE_PATH, удалите переменную среды и установите yo и генераторы или любые другие глобальные пакеты, которые вам нужны. Вы увидите, что он перестает жаловаться, и все заканчивается в подкаталоге nvm, соответствующем текущей версии.

Когда вы начнете использовать другую версию Node в NVM, переустановите глобальные пакеты. Это позволит аккуратно упорядочить все по версии, как и предполагалось.

Больше информации об этом обсуждении здесь: https://github.com/creationix/nvm/pull/97

10
Thijs Koerselman

Все, что мне нужно было сделать, это добавить эту строку в .bash_profile

export PATH="$PATH":~/.node/bin

Вы можете выполнить это, чтобы добавить его автоматически:

printf "\nexport PATH=\"\$PATH\":%s\n" ~/.node/bin >> ~/.bash_profile

Протестировано на OS X 10.9, 10.10, 10.11 и Ubuntu 14.04

23
bfred.it

Укороченная версия:

В командной консоли введите следующие команды:

  1. npm config set prefix ~/npm

  2. echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc

  3. Затем переустановите Yeoman:

    npm install -g yo

Тогда все должно работать нормально!

Объяснение:

Если бы сработала аналогичная ситуация, за исключением того, что команда yo работала, но все установленные генераторы не появились после их установки, это решило проблему.

Проблема в том, что ваш путь npm установлен в/usr/local, который является каталогом, которому требуются права root/Sudo, так как yo - команда пользователя, его не следует запускать как суперпользователь, и если вы попытаетесь запустите Sudo yo, Yeoman скажет вам об этом явно.

Я также пытался chown -R $USER:$USER /usr/local и chmod -R /user/local +rw, но ничего из этого не помогло.

Имейте в виду, что модули узлов (генераторы также являются модулями узлов), которые были ранее установлены в/usr/local, могут больше не быть доступными и потребуют повторной установки.

18
Oleg Belousov

У меня на Ubuntu работало только следующее ...

Ubuntu

Протестировано на Ubuntu 14.04.2

Это была базовая установка Ubuntu 14.04.2 в VirtualBox с использованием ubuntu-trusty-64.

Я только что установил node и npm fresh, и они работали хорошо.

npm install -y -g yo
echo export PATH="$HOME/npm/bin:$PATH" >> ~/.bashrc
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
npm install -y -g yo

да, мне пришлось установить Yeoman, исправить проблемы с путями, а затем переустановить Yeoman.

Объяснения выше от Олега Тихонова и bfred.it

12
steven iseki

Просто добавлю, я использую OS X 10.11.1, код, упомянутый Стивом, работает и для меня.

npm install -y -g yo
echo export PATH="$HOME/npm/bin:$PATH" >> ~/.bashrc
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
npm install -y -g yo
4
Jason

Попробовав вышеупомянутое предложение, я заметил, что yeoman был установлен, как и ожидалось, в /Users/joanna/.node/bin/yo. Я установил символические ссылки на yo, grunt и bower в /usr/local/bin с

ln -s /Users/joanna/.node/bin/yo /usr/local/bin/yo
ln -s /Users/joanna/.node/bin/grunt /usr/local/bin/grunt
ln -s /Users/joanna/.node/bin/bower /usr/local/bin/bower

Все работает сейчас, но я обеспокоен тем, что ссылки могут вызвать проблемы в будущем. Есть ли лучшее решение?

4
Joanna Marsden

Проверьте, где установлен ваш npm:

where npm

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

/usr/local/Cellar/node/5.1.0/libexec/npm/bin/npm

Скопируйте путь до папки bin и экспортируйте так же, как переменную PATH, как показано ниже:

export PATH=$PATH:/usr/local/Cellar/node/5.1.0/libexec/npm/bin
0
Arpit

Я использовал : 

$HOME/npm/bin

И это сработало!

В MAC OSX

0
Despertaweb

В моем случае я должен был выполнить:

npm config delete prefix

затем установите версию NVM 

nvm use 8

и это работает

0
Badr Bellaj