2012-09-11 33 views
133

He intentado instalar la glorieta de twitter en mi Mac, y utilizacomando Bower no encontrado

npm install bower -g 

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

+2

¿Cuál es el resultado de 'npm install'? ¿Falló? ¿Instaló Bower en algún lugar que no esté en su 'PATH'? – chesles

+0

posible duplicado de ["comando no encontrado" después de la instalación] (http://stackoverflow.com/questions/15846076/command-not-found-after-installation) –

Respuesta

317

Al igual que en esta pregunta (npm global path prefix) todo lo que necesita es establecer adecuado npm prefix.

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

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

Entonces bower debe situarse sólo en su $PATH.

+0

Me gustaría agregar que esta no es la respuesta más correcta si trabajas con múltiples proyectos. Bower debe instalarse en 'node_modules'locally desde' package.json' y no globalmente, ya que diferentes proyectos pueden usar diferentes versiones (ese es el punto de 'npm'). El verdadero problema es que el sistema no puede encontrar el ejecutable de bower local. –

+0

@BrunoFinger: Al instalar bower en el alcance global, esa respuesta no resuelve el problema.Sin embargo, el uso de paquetes de nodos locales podría ser una mejor forma de tratar con las herramientas específicas del proyecto. –

51

Estoy casi seguro de que no lo está instalando correctamente. Puesto que usted está tratando de instalarlo a nivel mundial, tendrá que ejecutarlo con sudo:

sudo npm install -g bower

+0

El mío no funcionó hasta que agregué -g – AliBZ

+3

Eso es cómo debe instalarse Bower, de lo contrario, se instalará en la carpeta donde ejecutó el comando. -g significa global y también crea los enlaces necesarios para módulos que se pueden ejecutar como comandos del sistema, bower, grunt-cli, incluso npm son claros ejemplos de esto. –

+0

¡No instale con sudo! Solo use brew doctor y haga las correcciones que elabora doctor, ¡y luego no necesitará usar sudo! – djangofan

3

Esto resultó NO ser un problema de glorieta, aunque se presentó para mí con bower.

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

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

ls -al/usr/local/bin -rwxrwsr-- 110 NMT raíz 5.535.636 Jul 17 de 2012 git

Aquí es un nodo-que tratan:

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

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

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

Espero que esto ayude.

1

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