команда bower не найдена

158

Я попытался установить Twitter Bower на моем Mac, и я использовал

npm install bower -g

Тогда я попытался bower --help, и выход был bower command not found. Это почему?

Амо Ву
источник
2
Из чего вывод npm install? Это не удалось? Это установило беседку в какое-то место не на вашем PATH?
jches
возможный дубликат «команда не найдена» после установки
Синдре Сорхус

Ответы:

365

Как и в этом вопросе ( префикс глобального пути npm ), все, что вам нужно, это правильно установить npm prefix.

UNIX:

$ npm config set prefix /usr/local
$ npm install -g bower

$ which bower
>> /usr/local/bin/bower

Windows и NVM:

$ npm config set prefix /c/Users/xxxxxxx/AppData/Roaming/nvm/v8.9.2
$ npm install -g bower

Тогда bowerдолжен располагаться как раз в вашем $PATH.

Петр Иоахим
источник
1
Я хотел бы добавить, что это не самый правильный ответ, если вы работаете с несколькими проектами. Бауэр должен быть установлен node_modulesлокально, package.jsonа не глобально, поскольку разные проекты могут использовать разные версии (в этом весь смысл npm). Реальная проблема заключается в том, что система не может найти исполняемый файл локального сервера.
Бруно Фингер
@BrunoFinger: при установке бауэра в глобальном масштабе этот ответ не решает проблему. Однако использование пакетов локальных узлов может быть лучшим способом работы с инструментами, специфичными для проекта.
Петр Иоахим
Я думаю, что если префикс npm установлен в / usr / local, npm install -g не будет работать без sudo.
Imafish
Мы не рекомендуем использовать Bower для новых проектов. Пожалуйста, рассмотрите пряжу и Webpack или посылку.
Даниил
60

Я почти уверен, что вы на самом деле не устанавливаете его правильно. Поскольку вы пытаетесь установить его глобально, вам нужно запустить его с помощью sudo:

sudo npm install -g bower
Эрик Руис де Чавес
источник
3
Вот как должен быть установлен bower, иначе он будет просто установлен в папку, где вы выполнили команду. -g означает глобальный, а также создает необходимые ссылки для модулей, которые могут быть выполнены как системные команды, bower, grunt-cli, даже npm являются яркими примерами этого.
Эрик Руис де Чавес,
Не устанавливайте с sudo! Просто используйте Brew Doctor и сделайте исправления, которые предлагает Brew Doctor, и тогда вам не нужно будет использовать sudo!
Джангофан
4

Оказалось, что это НЕ проблема с беседкой, хотя для меня это оказалось с беседкой.

Кажется, это узел, какая проблема. Если файл находится в пути, но установлен бит setuid / setgid, который не найдет его.

Вот файлы с установленным битом s: (unix 'which' найдет его без проблем).

ls -al / usr / local / bin -rwxrwsr-- 110 root nmt 5535636 17 июля 2012 г. git

Вот узел-попытка:

> which.sync('git')
Error: not found: git

Я меняю права доступа (chomd 755 git). Теперь узел, который может его найти.

> which.sync('git')
'/usr/local/bin/git'

Надеюсь это поможет.

user3112929
источник
3

Я использую менеджер версий узлов. Я получал это сообщение об ошибке, потому что я переключился на другую версию узла. Когда я переключился обратно на версию узла, где я установил bower, эта ошибка исчезла. В моем случае команда былаnvm use stable

пчела
источник
3

В качестве альтернативы, вы можете использовать, npxкоторый приходит с npm> 5.6.

npx bower install

Кулдип Саксена
источник
1
Это должен быть принятый ответ. Вы никогда не должны устанавливать глобальные модули с npm.
Чови