Tengo un problema al instalar módulos de nodo global y todo lo que encuentro en línea dice que la solución es simplemente agregar -g. Cuál no es el problema. Creo que es un problema de vinculación o un problema de directorio incorrecto.
Esto es lo que hago:
$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly
$ express myapp
bash: express: command not found
Sin embargo, cuando ejecuto la ubicación del enlace directo para expresar, funciona:
$ /usr/local/share/npm/bin/express myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
... Builds app correctly
Dónde está el módulo:
$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express
En mi .bash_profile tengo:
export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node
¿Necesito cambiar mi entorno de nodo para descargar a la carpeta correcta? ¿Hay algo que no se vincula correctamente? Estoy perdido..
¡Gracias!
Otras especificaciones:
$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
node.js
terminal
installation
npm
im_benton
fuente
fuente
express
.bin
ruta, que configuré en .bash_profile, es:export PATH=$PATH:/usr/local/Cellar/node/10.5.0/bin
Respuestas:
Agregue
$(npm get prefix)/bin
a suPATH
(por ejemplo, en.bashrc
), así:echo "export PATH=$PATH:$(npm get prefix)/bin" >> ~/.bashrc
Para obtener más información, consulte
npm help npm
:Puede encontrar el prefijo de instalación con
npm get prefix
onpm config list | grep prefix
.fuente
$HOME/.npm
al .bash_profile o .bashrc? Yo uso nvm, así que quiero asegurarme de que no estoy cruzando cosas en esto.PATH
será/usr/local/Cellar/node/VERSION_NUMBER/bin/
.Esto puede significar que el prefijo de instalación de su nodo no es el esperado.
Puede configurarlo así:
npm config set prefix /usr/local
luego intente ejecutar de
npm install -g
nuevo, y debería funcionar. Me funcionó en una Mac y la solución proviene de este sitio:http://webbb.be/blog/command-not-found-node-npm/
EDITAR: Tenga en cuenta que me encontré con esto nuevamente en una nueva Mac que estoy configurando, y también tuve que hacer el proceso detallado aquí en stackoverflow .
fuente
nodenv
y probablemente haya una mejor manera de resolver este problema para mi caso. Sin embargo, su solución funcionó como una solución rápida y sucia. Luego cambié el prefijo de nuevo alnodenv
prefijo y pude ejecutar el paquete desde/usr/local path
. ¡Gracias!/Users/(username)/.npm-global
pesar de que hice una nueva instalación de todo. También estoy en una MacMi npm tampoco pudo encontrar paquetes globales. Hice lo que sugirió Brad Parks:
Luego recibí un error de permisos EACCES (NO UTILICE
sudo npm install -g <package>
) y lo arreglé a través de los documentos oficiales de npm: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globallymkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
fuente
export PATH=~/.npm-global/bin:$PATH
línea está en el archivo ~ / .profile . ¿Tiene algún error?En mi caso, la variable de entorno NODE_PATH estaba vacía. Compruebe si está vacío
si NODE_PATH está vacío. Luego cambie ~ / .bash_profile y agregue NODE_PATH
nano ~/.bash_profile export NODE_PATH=`npm root -g` source ~/.bash_profile
Ahora instale los módulos npm nuevamente y verifique si se están instalando en la ruta
npm root -g
fuente
¡ Nunca instalo nada de npm, a través de sudo! Tengo mis propias razones, pero trato de mantener las cosas simples y basadas en el usuario, ya que este es un mundo de desarrollo de usuarios, y no todos tienen acceso de root, y root / sudo al instalar cosas como esta parece desordenar las cosas para comenzar con. Después de todo, todos los desarrolladores deberían poder seguir estas instrucciones, no solo los usuarios privilegiados de sudo.
Este sistema en particular es un RHEL7 al que se accede a través de SSH:
Con frecuencia, se necesitan varias versiones de nodo, por lo que uso NVM https://github.com/creationix/nvm
Dicho esto, puedo mostrarte un ejemplo práctico para
-g
instalaciones globales, usando NVM, NPM y rutas de nodo que no usan root.establezca su prefijo para
.npm-packages
si aún no lo está. (nota, eso es un guion, no un guion bajo)nvm config ls prefix = "/home/<yourusername>/.npm-packages"
Luego ajuste su ~ / .bash_profile o .bashrc si prefiere leer sobre por qué y cuál aquí , con la siguiente información.
#PATH EXPORTS NODE_MODULES=$HOME/.npm NPM_PACKAGES=$HOME/.npm-packages/bin export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES #NVM ENABLE export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
Eso cubre prácticamente todos los caminos. Por ejemplo, si instala gulp de esta manera,
npm install -g gulp
se enlaza simbólicamente~/.npm-packages/bin
(tenga en cuenta que es un guión, no un guión bajo). (sin necesidad degulp-cli
, ogulp-cl
)Prácticamente puede reemplazar / comentar todas las demás exportaciones de rutas de nodo. Puede poner esta información de ruta debajo de cualquier otra información de ruta que ya tenga, de manera segura, sin que sobrescriba esas cosas.
fuente
Agregue la siguiente línea a su
~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
Cargar perfil bash
fuente
Para usuarios de Windows
Agregue esto a su ruta: "% AppData% \ npm"
fuente
El problema que tuve fue que faltaban los binarios porque el archivo .npmrc específico del usuario en mi directorio de inicio se había
bin-links
configurado enfalse
, aunque eldefault is true
.En caso de que este sea su problema, verifique que ninguno de sus archivos .npmrc lo tenga configurado como falso.
Luego, reinstalar todos los módulos creará los binarios en el
prefix
para quePATH
pueda verlos.fuente
Verifique la carpeta binaria de su módulo Node global y agréguela a su $ PATH.
npm list -g | head -1
Si usa nodenv, la ruta cambiará siempre que instale la versión del nodo global. Agregar la ruta de esta manera resuelve mi problema.
"$HOME/.nodenv/versions/$(nodenv global)/bin"
Atajo para agregar la ruta a zsh
$ echo 'export PATH="$HOME/.nodenv/versions/$(nodenv global)/bin"' >> ~/.zshrc
fuente