node instalar home español actualizar node.js npm

node.js - instalar - Npm global no se utiliza?



node js español (4)

Así que anteriormente tuve algunos problemas de npm y seguí algunos comandos de stackoverflow / github issues para intentar solucionarlos. Lo que funcionó ... Kinda. Todo estuvo bien hasta hace poco, cuando me di cuenta de que mis paquetes npm globales en realidad no se estaban leyendo / utilizando.

Así que cada vez que hice un npm -g install xxx, o una actualización. Actualiza la carpeta global, pero no se está utilizando. Así que fui a cavar un poco y encontré esto.

Donde npm está leyendo / usando de

usr/local/lib/node_modules

Donde se instala el global para

Users/Me/.npm-global/lib/node_modules

Así que cada vez que hice una comprobación -g para mis módulos y cosas, todo está bien y actualizado, pero cuando realmente intento ejecutar algo, el comando npm usa el que está en las carpetas más antiguas. Así que básicamente no puedo actualizar o instalar nada usando -g. Y nada entra en la carpeta antigua, que es la que realmente se está utilizando.

¿Cómo resuelvo esto? ¿Se ha jodido algún enlace o perfil?


A continuación, se encuentran los pasos para cambiar el directorio de inicio de las instalaciones npm globales para el usuario que ha iniciado sesión actualmente:

  1. Haga un directorio para instalaciones globales:

    mkdir ~/.npm-global

  2. Configure npm para usar la nueva ruta del directorio:

    npm config set prefix ''~/.npm-global''

  3. Abra o cree un archivo ~ / .profile y agregue esta línea:

    export PATH=~/.npm-global/bin:$PATH

  4. De vuelta en la línea de comandos, actualice las variables de su sistema:

    source ~/.profile

  5. Prueba: descargue un paquete globalmente sin usar sudo.

    npm install -g <package_name>

En lugar de los pasos 1-5, puede usar la variable ENV correspondiente (por ejemplo, si no desea modificar ~ / .profile):

NPM_CONFIG_PREFIX=~/.npm-global

La configuración anterior no funcionaría si utiliza sudo para instalar los módulos npm, ya que seguirá las configuraciones establecidas para el usuario root.


Necesitas respetar el orden de carga.

Cargando desde node_modules Carpetas

Si el identificador de módulo pasado a require() no es un módulo central y no comienza con ''/'' , ''../'' o ''./'' , entonces Node.js comienza en el directorio principal del módulo actual, y agrega /node_modules e intenta cargar el módulo desde esa ubicación. El nodo no agregará node_modules a una ruta que ya termina en node_modules .

Si no se encuentra allí, se mueve al directorio principal, y así sucesivamente, hasta que se alcanza la raíz del sistema de archivos.

Por ejemplo, si el archivo en ''/home/ry/projects/foo.js'' llamado require(''bar.js'') , Node.js se vería en las siguientes ubicaciones, en este orden:

  • /home/ry/projects/node_modules/bar.js
  • /home/ry/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

Esto permite que los programas localicen sus dependencias, para que no entren en conflicto.

Es posible requerir archivos o submódulos específicos distribuidos con un módulo incluyendo un sufijo de ruta después del nombre del módulo. Por ejemplo, require(''example-module/path/to/file'') resolvería la path/to/file relación a donde se encuentra el example-module . La ruta con sufijo sigue la misma semántica de resolución de módulos.


Parece que esto se trata de la configuración de su prefijo npm. El prefijo global es la carpeta donde npm instalará los paquetes globales.

Primero ejecutaría el siguiente comando para obtener el valor del prefijo global ( https://docs.npmjs.com/cli/prefix )

$ npm prefix -g

Para configurarlo en un valor diferente:

npm config set prefix /usr/local/lib/node_modules

Esto es para la ubicación de sus paquetes globales, ahora necesita verificar que la variable PATH de su terminal esté revisando esta carpeta en busca de archivos binarios.

$ echo $PATH

El comando anterior imprimirá una lista separada por ":" de la ubicación de la carpeta que su shell comprueba en busca de archivos binarios.

Su ubicación global de prefijo npm debería ser parte de esa lista, de su pregunta supongo que esta carpeta / usr / local / lib / node_modules ya lo es.


Solo un pequeño cambio en la respuesta de maxletou, ¿intentó configurar el prefijo de la siguiente manera?

npm config set prefix /usr/local