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

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

После первого сбоя я удалил узел, используя следующие инструкции: Как мне полностью удалить Node.js и переустановить с начала (Mac OS X) Затем я установил nvm и node/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: команда не найдена

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

9 ответов

Решение

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

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

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

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

Все, что мне нужно было сделать, это добавить эту строку в .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

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

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

  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Йоман скажет вам это явно.

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

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

У меня на 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

Просто добавлю, я использую 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

Попробовав вышеупомянутое предложение, я заметил, что Yeoman был установлен, как и ожидалось, в /Users/joanna/.node/bin/yo, Я установил символические ссылки на йо, ворчание и беседу в /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

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

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

npm config delete prefix

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

nvm use 8

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

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

$HOME/npm/bin

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

В MAC OSX

Проверьте, где ваш 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
Другие вопросы по тегам