Почему мои генераторы Yeoman устанавливаются в неправильном месте?
У меня проблема с генераторами Йомана. Они устанавливаются просто отлично, если я запускаю "npm install [имя-генератора] -g". Однако, когда я пытаюсь запустить "yo [имя-генератора], yoman, похоже, не может найти генератор. Также он не указан среди моих других генераторов, если я просто запускаю" yo ". Я пробовал кучу генераторов и результат всегда один и тот же.
После небольшого количества исследований я обнаружил, что загруженный генератор помещается в
/usr/local/lib/node_modules/
Но мои другие генераторы помещены в
/usr/local/lib/share/npm/lib/node_modules/
Вот образ того, как он выглядит на моей машине http://i.imgur.com/DxWTYHb.png, я работающий OSX в случае, если это имеет значение. Похоже, что-то для меня не так, но я не могу понять.
Не уверен, что это помогает, но brew doctor и $NODE_PATH ничего не возвращают, пока возвращает $PATH:
-bash:
/usr/local/share/npm/bin:
/Users/marcus/.rvm/gems/ruby-2.0.0-p247/bin:
/Users/marcus/.rvm/gems/[email protected]/bin:
/Users/marcus/.rvm/rubies/ruby-2.0.0-p247/bin:
/Users/marcus/.rvm/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/local/git/bin: No such file or directory
UPDATE
Я попробовал то, что предложил Эдди Мондж-младший, и теперь мой генератор angular отлично работает. Однако, когда я установил другой генератор (chrome-extension), йоман настаивает на том, что он не установлен/не найден.
Когда я запускаю ls $(префикс get npm config)/lib/node_modules, я получаю следующее:
bower generator-mocha
generator-angular grunt-cli
generator-chrome-extension npm
generator-karma yo
И список npm -g возвращает это (я вырезал много общих вещей)
/usr/local/lib
├─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
├─┬ [email protected]
└─┬ [email protected]
Странная часть для меня - если я запустил yo --help, я получаю странный список генераторов
[?] What would you like to do?
[ ] Run the Angular generator
[ ] Run the Foundation generator
[ ] Run the H5bp generator
[X] Run the Mocha generator
[ ] Run the Webapp generator
[ ] Run the Karma generator
[ ] Update your generators
[ ] Install a generator
[ ] Find some help
[ ] Get me out of here!
Ответы
Ответ 1
Я попробовал установить Yeoman на Ubuntu exact32 vagrant vm. Я столкнулся с той же проблемой: Yeoman не нашел генераторы, которые я установил, хотя ошибок при установке этих генераторов не было. Файлы были на месте, а разрешения были в порядке.
Вышеупомянутые решения не сработали для меня.
Я побежал
yo doctor
чтобы увидеть, что было не так, и, как выяснилось, возникла следующая проблема:
[Yeoman Doctor] Uh oh, I found potential errors on your machine
---------------
[Error] NPM root value is not in your NODE_PATH
[info]
NODE_PATH = /usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
NPM root = /home/vagrant/npm/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:/home/vagrant/npm/lib/node_modules
Or run this command
echo "export NODE_PATH=$NODE_PATH:/home/vagrant/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
Исправление, предложенное Yeoman Doctor, работало как рекламируемое.
Ответ 2
Я попал в эту проблему, и я надеюсь, что это поможет кому-то.
Я считаю, что модернизация NPM вызвала этот исходный вопрос для меня.
/usr/local/lib/node_modules
Было место, где было много моих модулей в прошлом. Начиная с обновления node в какой-то момент каталог стал
/usr/local/share/npm/lib/node_modules
Когда я буду запускать новые установки, такие как:
npm install -g grunt-cli
Я, так как я запускаю grunt
из командной строки, он не "нашел" его (это потому, что он не был в моем новом node_modules dir). Я установил это в моем .bash_profile:
export PATH=$PATH:/usr/local/share/npm/bin
Теперь я указываю на новый каталог node_modules
Итак, все новые модули npm, которые я устанавливаю, находят правильное местоположение:/usr/local/share/npm/lib/node_modules
Но не yo
Я запустил which yo
, и мой путь был
/usr/local/bin/yo
Этот двоичный файл указывал на установку OLD node_modules
@
/usr/local/lib/node_modules
Мое решение состояло в том, чтобы сделать это
rm /usr/local/bin/yo
npm remove -g yo
Старая ссылка на yo
исчезла для сохранения, теперь я могу сделать
npm install -g yo
Это добавит его в новое расположение node_modules
/usr/local/share/npm/lib/node_modules
и теперь новый "yo" ссылается на исходную базовую базу node_modules
source ~/.bash_profile
то мы можем видеть, что yo ссылается от правильного пятна
which yo
/usr/local/share/npm/bin/yo
все будущие генераторы будут помещены в соответствующий каталог node_modules
, и yo
сможет найти их без проблем!
Ответ 3
Я полностью удалил yoman, а затем снова установил его
npm remove -g yo
npm install -g yo
Это устранило мою проблему с отсутствующими генераторами angular.
Ответ 4
Похоже, что ваш npm может быть из-за удара. Проверьте, где установлены: npm config get prefix
Это где вы ожидали установки пакетов? Это где они в настоящее время установлены?
Перечислить, что там есть:
ls $(npm config get prefix)/lib/node_modules
Здесь будут перечислены глобально установленные пакеты npm.
npm list -g
Перечислит текущие установленные вещи. Убедитесь, что yo и генераторы указаны на верхнем уровне.
Чтобы удалить материал yo и начать все заново:
npm remove -g yo generator-* yeoman-generator
npm install -g yo generator-angular
Это должно исправить ситуацию.