not node mac found error and macos node.js npm zsh

macos - node - reinstall npm



npm prefijo de ruta global (8)

Ampliando su PATH con:

export PATH=/usr/local/share/npm/bin:$PATH

no es una idea terrible Habiendo dicho eso, no deberías tener que hacerlo.

Ejecuta esto:

npm config get prefix

El valor predeterminado en OS X es /usr/local , lo que significa que npm enlazará binarios en /usr/local/bin , que ya debería estar en su PATH (especialmente si está utilizando Homebrew).

Asi que:

  1. npm config set prefix /usr/local si es otra cosa, y
  2. ¡No use sudo con npm! De acuerdo con los documentos jslint , debería poder npm install .

Si instaló npm como sudo ( sudo brew install ), intente reinstalarlo con la simple brew install . Se supone que Homebrew te ayuda a mantenerte sudo libre.

Estoy siendo más cauteloso que de costumbre porque me ha confundido el comportamiento de las npm en el pasado.

Estoy en una Mac y he instalado node.js a través del brew install node .

Ahora que quiero ejecutar jslint.js en la línea de comandos como el comando jslint , encuentro que la manera canónica de lograr esto es sudo npm install -g jslint que se ejecutó con éxito con este resultado:

$ sudo npm install -g jslint npm http GET https://registry.npmjs.org/jslint npm http 200 https://registry.npmjs.org/jslint npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz npm http GET https://registry.npmjs.org/nopt npm http 200 https://registry.npmjs.org/nopt npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz npm http GET https://registry.npmjs.org/abbrev npm http 200 https://registry.npmjs.org/abbrev npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz /usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/ bin/jslint.js [email protected] /usr/local/share/npm/lib/node_modules/jslint └── [email protected] ([email protected])

Después

$ jslint ply.js zsh: command not found: jslint

debido a /usr/local/share/npm/bin no está en mi $PATH .

1) ¿Por qué brew no instaló la npm global de npm bin en la ruta? Quizás sí, pero algo que hace zsh es estropearlo. ¿Dónde podría ser capaz de encontrar eso?
2) ¿Debo hacer esto? (Agregar :/usr/local/share/npm/bin a $PATH exportado en la parte inferior de mi ~/.zshrc )

Parece que esta no es la manera correcta de hacerlo porque si instalo algo más más tarde (usando Homebrew o algo así) tendré que agregarlo a mi secuencia de comandos de inicio zsh para establecer la ruta. Supongo que en este caso particular, solo es cuestión de que npm install -g no haga los enlaces simbólicos correctos en una ubicación "adecuada" (como /usr/local/bin ).

Creo que lo que haré es construir manualmente enlaces simbólicos dentro de /usr/local/bin para cualquier programa que tenga problemas y debería ser lo suficientemente bueno para mis propósitos.



Intenta ejecutar:

PATH=$PATH:~/npm/bin

y luego haz una prueba ejecutando express en la línea de comando. Esto funcionó para mí.


Pasé un tiempo sobre este tema, y ​​el interruptor PATH no estaba ayudando. Mi problema fue el error Homebrew / node / npm que se encuentra aquí - https://github.com/npm/npm/issues/3794

Si ya ha instalado un nodo usando Homebrew, intente con **** Nota por cada comentario que esto podría no ser seguro. Funcionó para mí, pero podría tener consecuencias no deseadas. También parece que la última versión de Homebrew instala correctamente npm. Probablemente probaría la brew update , brew doctor , brew upgrade node etc. antes de probar ****:

npm update -gf

O bien, si desea instalar un nodo con Homebrew y hacer que npm funcione, use:

brew install node --without-npm curl -L https://npmjs.org/install.sh | sh


Si ha vinculado los paquetes de nodo usando el comando sudo

Luego vaya a la carpeta donde node_modules están instalados globalmente.

En los sistemas Unix, normalmente se ubican en / usr / local / lib / node o / usr / local / lib / node_modules cuando se instalan globalmente. Si establece la variable de entorno NODE_PATH en esta ruta, los módulos se pueden encontrar por nodo.

Windows XP -% USERPROFILE% / Application Data / npm / node_modules Windows 7 -% AppData% / npm / node_modules

y luego ejecuta el comando

ls -l

Esto proporcionará la lista de todos los node_modules globales y podrá ver fácilmente los módulos de nodos vinculados.


Uso brew y el prefijo ya estaba configurado para ser:

$ npm config get prefix /Users/[user]/.node

Me di cuenta de que la carpeta bin y lib era propiedad de root, lo que impedía la instalación habitual no sudo, por lo que volví a ser propiedad del usuario

$ cd /Users/[user]/.node $ chown -R [user]:[group] lib $ chown -R [user]:[group] bin

Luego agregué la ruta a mi .bash_profile que se encuentra en / Users / [user]

PATH=$PATH:~/.node/bin


brew no debería exigirle que use sudo incluso cuando ejecuta npm con -g. Esto en realidad podría crear más problemas en el futuro.

Normalmente, brew o port le permiten actualizar su ruta para que no corra el riesgo de estropear su .zshrc, .bashrc, .cshrc o cualquier otro sabor de shell que use.


sudo brew ya no es una opción así que si instalas con brew en este punto vas a obtener 2 cosas realmente desagradables: A: le gusta instalar en /usr/local/opts o según esto, / usr / local / compartido. Esto no es gran cosa al principio, pero he tenido problemas con el nodo PATH especialmente cuando instalé pelusa. B: estás atascado con los comandos sudo hasta que lo desinstales e instales de esta manera o puedes obtener la pila de Bitnami

Recomiendo este método sobre la opción de pila porque está listo si tienes varios proyectos. Si vas con la pila MEAN prefabricada, tendrás que configurar hosts virtuales en httpd.conf (más daño en esta pila que XAMPP), pásate la actualización habitual de tu extra / vhosts.conf y / etc / hosts por cada elemento adicional proyecto, a menos que desee volver a marcar y reiniciar su servidor cuando termine de actualizar las cosas.