Nodejs no puede encontrar el módulo instalado en Windows?

Estoy aprendiendo nodejs por el momento en Windows. Varios módulos se instalan globalmente con npm.cmd, y nodejs no pudo encontrar los módulos instalados. Tome jade por ejemplo,

npm install jade -g 

Jade está instalado en el directorio "C:\Program Files (x86)\nodejs\node_modules" , pero el siguiente código fallará con un error "Cannot find module 'jade'" ,

 var jade = require('jade'); 

Sin embargo, el código se ejecutará correctamente cuando jade esté instalado localmente (sin la opción -g en npm). No quiero usar módulos instalados localmente, es un desperdicio de espacio en disco para mí, ¿alguien me puede ayudar a hacer que los módulos instalados globalmente funcionen en Windows?

Agregue una variable de entorno llamada NODE_PATH y NODE_PATH en %USERPROFILE%\Application Data\npm\node_modules (Windows XP), %AppData%\npm\node_modules (Windows 7/8/10), o donde npm termine instalando los módulos en su sabor de Windows. Para terminar con esto de una vez, agregue esto como una variable del sistema en la pestaña Avanzado del cuadro de diálogo Propiedades del sistema (ejecute control.exe sysdm.cpl,System,3 ).

La solución rápida en Windows 7+ es simplemente ejecutar:

 rem for future setx NODE_PATH %AppData%\npm\node_modules rem for current session set NODE_PATH=%AppData%\npm\node_modules 

Vale la pena mencionar que NODE_PATH solo se usa al importar módulos en aplicaciones Node. Cuando desee utilizar los binarios de los módulos instalados globalmente en su CLI, deberá agregarlos también a su PATH , pero sin la parte node_modules (por ejemplo, %AppData%\npm en Windows 7/8/10).


Vieja historia

Soy bastante nuevo en node.js, así que no puedo estar del todo en lo cierto, pero según mi experiencia, funciona de la siguiente manera:

  1. -g no es una forma de instalar bibliotecas globales, solo es una forma de ubicarlas en la ruta del sistema para que pueda llamarlas desde la línea de comandos sin escribirles la ruta completa. Es útil, por ejemplo, entonces la aplicación de nodo está convirtiendo archivos locales, como menos ; si la instala globalmente, puede usarla en cualquier directorio.
  2. node.js en sí mismo no miró el directorio global de npm, está utilizando otro algoritmo para encontrar los archivos necesarios: http://nodejs.org/api/modules.html#modules_file_modules (básicamente está escaneando cada carpeta en la ruta, comenzando de la carpeta actual para node_modules y lo comprueba).

Consulte una pregunta similar para obtener más información: ¿cómo instalo un módulo globalmente usando npm?

si se encuentra en la plataforma de windows7, quizás deba cambiar NODE_PATH de la siguiente manera: %AppData%\npm\node_modules

Sé que puedo despertar a un zombie, pero creo que esto sigue siendo un problema, si necesita acceso global a los módulos de nodo en Windows 7, necesita agregar esto a su ruta de variable global:

 C:\Users\{USER}\AppData\Roaming\npm 

Importante: solo esto sin la parte node_modules , me tomó media hora para ver esto.

Para hacerlo funcionar en Windows 10, lo resolví agregando la carpeta %USERPROFILE%\AppData\Roaming\npm a mi RUTA. Tener \node_modules anexados así: %USERPROFILE%\AppData\Roaming\npm\node_modules\ no funcionó para mí.

Voy a citar de la publicación de blog de este nodo …

En general, la regla de oro es:

  • Si está instalando algo que desea usar en su progtwig, utilizando require (‘whatever’), entonces instálelo localmente en la raíz de su proyecto.
  • Si está instalando algo que desea usar en su shell, en la línea de comandos o algo así, instálelo globalmente, de modo que sus binarios terminen en su variable de entorno PATH.

Por supuesto, hay algunos casos en los que desea hacer ambas cosas. Coffee-script y Express son buenos ejemplos de aplicaciones que tienen una interfaz de línea de comando, así como una biblioteca. En esos casos, puede hacer una de las siguientes cosas:

  1. Instálalo en ambos lugares. En serio, ¿tienes poco espacio en el disco? Está bien, de verdad. Son pequeños progtwigs de JavaScript.
  2. Instálelo globalmente, y luego npm enlace coffee-script o npm link express (si está en una plataforma que admite enlaces simbólicos). Luego, solo necesita actualizar la copia global para actualizar también todos los enlaces simbólicos.

Para hacerlo breve, use npm link jade en el directorio de su aplicación.

Intenté agregar / editar variables de entorno y llegar a la conclusión de que:

  1. Edite / agregue User variables (del cuadro superior) en lugar de System variables del System variables (de la parte inferior); de lo contrario, debe “ejecutar como administrador” para que funcione.
  2. Adjunte ;%AppData%\npm a Path para usarlo como una herramienta de línea de comandos (si es compatible, como jshint y grunt-cli ).
  3. Cree NODE_PATH y NODE_PATH %AppData%\npm\node_modules para require('') en los scripts sin instalarlo en el directorio del proyecto. (Pero se npm link para este requisito si está trabajando en un sistema operativo con mklink como Vista y mklink más recientes).

Entorno de prueba:

  • Win 7 (Ent., 64-bit, SP1), Node.js 4.2.4, npm 2.14.12
  • Win 8.1 (Ent., 64 bits), Node.js 0.10.30, npm 1.4.21

Me encontré con este problema en Windows 7, corriendo

 npm install -g gulp 

como administrador mientras se inicia sesión como un usuario normal.

Solución: al ejecutar la misma instalación que el usuario normal (no “ejecutar como administrador” para cmd) todo estaba bien. Supongo que está relacionado con la instalación predeterminada y la ruta de búsqueda.

Me ha costado mucho conseguir que los módulos globales funcionen. Eventualmente, agregué explícitamente C:\Users\yourusername\AppData\Roaming\npm a la variable PATH en Variables del sistema. También necesitaba tener esta variable antes de la variable de ruta del nodojs en la lista.

Estoy ejecutando Windows 10.

Desde mi experiencia con win8.1 npm instala módulos en C:\Users\[UserName]\AppData\Roaming\npm\node_modules pero los busca dumply en C:\Users\[UserName]\node_modules .

Un módulo de referencia de solución simple en la aplicación por ruta completa:

 var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify"); 

Para Windows, todo el mundo dice que debe establecer variables de entorno para los módulos nodejs y npm, pero ¿sabe por qué? Para algunos módulos, tienen una herramienta de línea de comandos, después de instalar el módulo, hay un archivo .cmd [module] en C: \ Program Files \ nodejs , y se usa para ejecutarlo en el comando window. Por lo tanto, si no agrega la ruta que contiene el archivo cmd a las variables de entorno % PATH% , no podrá iniciarlas correctamente a través de la ventana de comandos.

Alternativamente, podría agregar al ~/.npmrc prefijo derecho. Tengo C:\Program Files\nodejs para 64 Win7.

Me encontré con esta pregunta porque quiero usar node.js con visual studio 2015 en mi nueva computadora con Windows 10. Utilicé node.js en Windows 7 y 8 y 8.1. Nunca es un problema que node.js encuentre un módulo. Utilizo un nodo heredado .js 0.10.39 porque tengo que usar esta versión debido a la serie y al módulo RFXCOM.

La respuesta para Windows 10 es establecer NODE_PATH en las variables de entorno con C: \ Users \ User \ node_modules.

Para Windows 10, tuve que instalar gulp localmente en la carpeta:

C: \ Users \ myaccount \ AppData \ Roaming \ npm \ node_modules

 npm install gulp 

Esto solucionó mi problema de “gulp no reconocido”

Tuve el mismo problema al intentar instalar npm install -g bower con npm install -g bower

Creo que esto fue porque el nodo fue instalado por otro usuario , no por mí.

Desinstalé el nodo y luego lo reinstalé. Durante la instalación, vi este texto para la opción Agregar a módulos PATH> npm :

Mensaje en la instalación del nodo

enter image description here

Después de la instalación del nodo, npm install -g bower nuevamente. Y ahora Bower funciona.

Claro que no es necesario volver a instalar el nodo con el usuario, como yo. La solución debe ser a través de las rutas NODE_PATH o PATH , como han explicado otros usuarios.

Esto es solo para señalar que este problema ocurre solo si el nodo ha sido instalado por otro usuario (o si durante la instalación no se ha marcado la opción Agregar a PATH> módulos npm ).

Simplemente descarga y reinstala el nodo desde aquí y esto solucionará todos los problemas de ruta.

No olvide reiniciar su símbolo del sistema o terminal.

si está usando Windows, toma algunos pasos, 1) crear un archivo llamado package.json

  { "name": "hello" , "version": "0.0.1" , "dependencies": { "express": "*" } } 

donde hola es el nombre del paquete y * significa la última versión de su dependencia

2) codifica tu directorio de proyecto y ejecuta el siguiente comando

npm instalar

Instala las dependencias