Estoy siendo más cauteloso de lo habitual porque he estado confundido por el comportamiento de npm
en el pasado.
Estoy en una Mac y he instalado node.js a través brew install node
.
Ahora que quiero ejecutar jslint.js
en la línea de comandos como el comando jslint
, encuentro que la forma canónica de lograr esto es sudo npm install -g jslint
que se ejecutó con éxito con esta salida:
$ 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
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Después
$ jslint ply.js
zsh: command not found: jslint
por /usr/local/share/npm/bin
no estar en mi $PATH
.
1) ¿Por qué brew
no instaló la npm
bin
ruta global a la ruta? Tal vez lo hizo, pero algo zsh
lo está arruinando. ¿Dónde podría encontrar eso?
2) ¿Debo hacer esto? (Añadir :/usr/local/share/npm/bin
al exportado $PATH
en la parte inferior de mi ~/.zshrc
)
Parece que esta no es la forma correcta de hacerlo porque si instalo algo más tarde (usando Homebrew o algo así) tendré que agregarlo a mi script de inicio zsh para establecer la ruta. Supongo que en este caso en particular es solo cuestión de npm install -g
no hacer los enlaces simbólicos correctos en una ubicación "adecuada" (como /usr/local/bin
tal vez).
Creo que lo que haré es construir manualmente enlaces simbólicos dentro /usr/local/bin
para cualquier programa con el que tenga problemas y debería ser lo suficientemente bueno para mis propósitos.
EDITAR : Estoy actualizando esto en 2019, porque esta vieja pregunta es popular pero ahora está desactualizada tanto en términos de mi flujo de trabajo personal como en términos de cómo instalar el nodo y administrar sus diversas dependencias.
Mi flujo de trabajo personal ahora es usar el instalador obtenido de nodejs.org para instalar el nodo en los sistemas. De hecho, confío en esto más que en el paquete homebrew en sí, porque sabe mejor cómo administrar los archivos. Si desea cambiar su nodo del sistema de 8.10 a 10.15, ya sea en Mac o Windows, simplemente descargue el instalador de nodejs.org para 10.15 para su sistema operativo. Intentar actualizar el nodo instalado a través de homebrew siempre ha demostrado ser un enfoque más difícil en mi experiencia.
Además, lo más importante a señalar es que el uso de sudo como se muestra en mi instalación npm de jslint ejemplo anterior es altamente desaconsejado; Estoy bastante seguro de que los paquetes homebrew nunca deben instalarse o interactuar de ninguna manera con el superusuario. ¡No debería ser necesario, y dará lugar a dolores de cabeza por permisos de archivo!
Además, recomiendo ESLint sobre jslint, y no he usado jslint en años.
Respuestas:
Extendiendo su
PATH
con:No es una idea terrible. Dicho esto, no deberías tener que hacerlo.
Ejecuta esto:
El valor predeterminado en OS X es
/usr/local
, lo que significa que npm enlazará binarios/usr/local/bin
, que ya deberían estar en suPATH
(especialmente si está utilizando Homebrew).Entonces:
npm config set prefix /usr/local
si es otra cosa ysudo
con npm! De acuerdo con los documentos de jslint , debería podernpm install
hacerlo.Si instaló npm como sudo (
sudo brew install
), intente reinstalarlo con ol 'simplebrew install
. Se supone que Homebrew te ayudará a mantenertesudo
libre.fuente
npm
niega a instalar ajslint
nivel mundialnpm install -g jslint
fallaError: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
si tuviera que hacer que los scripts escribieran enlaces en él sin necesidadsudo
? ¿Qué tal seguir esto para configurar nom / node en~/.local
o algo así?root
en mi~/
directorio (porsudo rm -r
ontmp/
y a.npm/
) y posteriormentenpm install -g jslint
funcionó maravillosamente. Es genial que npm en sí mismo sea un programa de nodo y sea un poco una prueba de concepto de línea de comando JS para mí, lo que estoy empezando a apreciar ahora que lo entiendo un poco mejor.chown
-ing/usr/local
y todo lo que contiene es una práctica estándar en OS X. Consulte la página de solución de problemas en el wiki de Homebrew.chown
ing de/usr/local
que ya ha ocurrido en mi máquina de otro modonpm
y otros plazo sinsudo
no sería capaz de depositar en los enlaces/usr/local/bin/
, etc.Pasé un tiempo en 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 instaló el nodo usando Homebrew, pruebe **** Nota por 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. Así que probablemente me gustaría probar
brew update
,brew doctor
,brew upgrade node
etc antes de intentar ****:O, si desea instalar el nodo con Homebrew y hacer que npm funcione, use:
fuente
Yo uso brew y el prefijo ya estaba configurado para ser:
Me di cuenta de que la carpeta bin y lib eran propiedad de root, lo que impedía la instalación no sudo habitual, por lo que se la volví a propietario al usuario
Luego, acabo de agregar la ruta a mi .bash_profile que se encuentra en / Users / [user]
fuente
brew no debería requerir que uses sudo incluso cuando ejecutas npm con -g. Esto podría crear más problemas en el futuro.
Por lo general, brew o port le permiten actualizar su ruta para que no se arriesgue a estropear su .zshrc, .bashrc, .cshrc o cualquier sabor de shell que use.
fuente
sudo
. Estaba usando sudo ennpm
(porque algo que leí me dijo). Tengo curiosidad acerca de dónde buscar cómo se establece el camino. En realidad, parece que elzsh
instalador ejecuta algo que termina codificando el camino (en el momento de la instalación dezsh
) en el.zshrc
que no me gusta tantonpm
debe instalarse en/usr/local
. El/usr
espacio de nombres de ruta está reservado para los paquetes oficiales de su distribución./usr/local/bin
en su $ PATH o no, es un problema zsh.Logré arreglar Vue Cli sin error de comando haciendo lo siguiente:
sudo nano ~/.bash_profile
para editar tu perfil de bash.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
yvue --version
etc.Hice esto después de instalar el último Vue Cli de https://cli.vuejs.org/
Generalmente uso hilo, pero lo instalé globalmente con npm
npm install -g @vue/cli
. También puedes usar hilo si quieresyarn global add @vue/cli
Nota: puede que tenga que desinstalarlo primero globalmente si ya lo tiene instalado:
npm uninstall -g vue-cli
¡Espero que esto ayude!
fuente
Cualquiera tuvo el mismo problema relacionado con un conflicto entre brew y npm. Compruebe esta solución https://gist.github.com/DanHerbert/9520689
fuente
Intenta correr:
y luego haga una prueba ejecutando
express
en la línea de comando. Esto funcionó para mí.fuente
~/.npm/bin
o algo así. no debería haber unnpm
directorio agregado a su directorio de inicio.Si ha vinculado los paquetes de nodos con el comando sudo
Luego vaya a la carpeta donde node_modules están instalados globalmente.
En los sistemas Unix, normalmente se colocan 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
Esto le dará la lista de todos los módulos de nodo global y podrá ver fácilmente los módulos de nodo vinculados.
fuente
sudo brew ya no es una opción, por lo que si instala con brew en este punto obtendrá 2 cosas realmente desagradables: A: le gusta instalar en
/usr/local/opts
/ según esto, / usr / local / shared. Esto no es un gran problema al principio, pero he tenido problemas con la RUTA de nodos, especialmente cuando instalé lint. B: estás atascado con los comandos sudo hasta que lo desinstales e instales de esta manera o puedas obtener la pila de BitnamiRecomiendo este método sobre la opción de pila porque está listo si tienes varios proyectos. Si opta por la pila MEAN prefabricada, tendrá que configurar hosts virtuales en httpd.conf (más complicado en esta pila que XAMPP). proyecto, a menos que desee volver a señalar y reiniciar su servidor cuando termine de actualizar las cosas.
fuente
La solución simple es ...
Simplemente ponga el siguiente comando:
sudo npm config get prefix
si no es algo como esto
/usr/local
, entonces necesita arreglarlo usando el siguiente comandosudo npm config set prefix /usr/local
...Ahora funciona al 100% bien
fuente