no se encuentra el comando bower

158

Traté de instalar Twitter Bower en mi Mac, y usé

npm install bower -g

Luego lo intenté bower --help, y la salida fue bower command not found. ¿Porqué es eso?

Amo Wu
fuente
2
¿De qué es la salida npm install? ¿Falló? ¿Instaló Bower en algún lugar que no esté en su PATH?
jches
posible duplicado de "comando no encontrado" después de la instalación
Sindre Sorhus

Respuestas:

365

Al igual que en esta pregunta ( prefijo de ruta global npm ), todo lo que necesita es establecer correctamentenpm prefix .

UNIX:

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

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

Windows y NVM:

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

Entonces bowerdebe ubicarse justo en su $PATH.

Petr Joachim
fuente
1
Me gustaría agregar que esta no es la respuesta más correcta si trabaja con múltiples proyectos. Bower debe instalarse node_moduleslocalmente package.jsony no globalmente, ya que diferentes proyectos pueden usar diferentes versiones (de eso se trata npm). El verdadero problema es que el sistema no puede encontrar el ejecutable local de Bower.
Bruno Finger
@BrunoFinger: Al instalar Bower a alcance global, esa respuesta no está resolviendo el problema. Sin embargo, el uso de paquetes de nodos locales podría ser una mejor manera de lidiar con herramientas específicas del proyecto.
Petr Joachim
Creo que si el prefijo npm se establece en / usr / local, npm install -g fallará sin sudo.
imafish
No recomendamos usar Bower para nuevos proyectos. Por favor considere hilo y paquete web o paquete.
Daniel
60

Estoy casi seguro de que en realidad no lo está instalando correctamente. Como está intentando instalarlo globalmente, deberá ejecutarlo con sudo:

sudo npm install -g bower
Erick Ruiz de Chavez
fuente
3
Así es como debe instalarse Bower, de lo contrario, solo se instalará en la carpeta donde ejecutó el comando. -g significa global y también crea los enlaces necesarios para los módulos que se pueden ejecutar como comandos del sistema, bower, grunt-cli, incluso npm son ejemplos claros de esto.
Erick Ruiz de Chavez
¡No instales con sudo! ¡Solo use brew doctor y haga las correcciones que brew doctor sugiere y luego no necesitará usar sudo!
djangofan
4

Esto resultó NO ser un problema de la glorieta, aunque se me apareció con la glorieta.

Parece ser un problema de nodo, que. Si hay un archivo en la ruta, pero tiene el bit setuid / setgid establecido, que no lo encontrará.

Aquí hay un archivo con el conjunto de bits s: (unix 'which' lo encontrará sin problemas).

ls -al / usr / local / bin -rwxrwsr-- 110 nmt raíz 5535636 17 de julio de 2012 git

Aquí hay un intento de nodo:

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

Cambio los permisos (chomd 755 git). Ahora nodo, que puede encontrarlo.

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

Espero que esto ayude.

usuario3112929
fuente
3

Estoy usando el administrador de versiones de nodo. Recibía este mensaje de error porque había cambiado a una versión diferente del nodo. Cuando volví a la versión del nodo donde instalé bower, este error desapareció. En mi caso, el comando fuenvm use stable

abeja
fuente
3

Alternativamente, puede usar el npxque viene junto con el npm> 5.6.

npx bower install

Kuldeep Saxena
fuente
1
Esta debería ser la respuesta aceptada. Nunca debería instalar módulos globales con npm.
chovy