Подтвердить что ты не робот

Почему мои генераторы 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!
4b9b3361

Ответ 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

Это должно исправить ситуацию.