Как исправить "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
Укороченная версия:
В вашей оболочке введите следующие команды:
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
Затем переустановите 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
и это работает
Проверьте, где ваш 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