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


Estoy aprendiendo nodejs en este momento en Windows. Varios módulos están instalados globalmente con npm.cmd y nodejs no pudieron 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 una pérdida de espacio en disco para mí, puede ¿alguien me ayudó a hacer que los módulos instalados globalmente funcionen en Windows?

Author: hippietrail, 2012-03-06

17 answers

Agregue una variable de entorno llamada NODE_PATH y establézcala 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 versión de Windows. Para hacer esto de una vez por todas, agregue esto como una variable del Sistema en la pestaña Avanzado del diálogo de propiedades del sistema (ejecutar 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 cuando se importan módulos en aplicaciones de nodos. Cuando se desea utilizar globalmente los binarios de los módulos instalados en su CLI también debe agregarlos a su PATH, pero sin la parte node_modules (por ejemplo %AppData%\npm en Windows 7/8/10).


Historia antigua

Soy bastante nuevo en node.js a mí mismo, así que no puedo ser del todo correcto, pero desde mi experiencia funciona de esta manera:

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

Véase pregunta similar para más detalles: ¿Cómo instalo un módulo globalmente usando npm?

 304
Author: Alexey Ivanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-14 12:38:35

Si estás en la plataforma windows7 quizás deberías cambiar el NODE_PATH así: %AppData%\npm\node_modules

 33
Author: Jack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-16 15:49:39

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

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

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

 23
Author: Vitaliy Terziev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-02 08:28:11

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

 13
Author: Andi-lo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-12 13:18:14

Citaré la entrada del blog de este nodo...

En general, la regla general es:

  • Si está instalando algo que desea usar en su programa, utilizando require ('lo que sea'), instálelo localmente, en la raíz de tu proyecto.
  • Si está instalando algo que desea usar en su shell, en la línea de comandos o algo, instálelo globalmente, de modo que su los binarios terminan en la 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 un interfaz de línea de comandos, así como una biblioteca. En esos casos, puede realice una de las siguientes acciones:

  1. Instálalo en ambos lugares. En serio, ¿tienes tan poco espacio en disco? Está bien, de verdad. Son pequeños programas JavaScript.
  2. Instalarlo globalmente, y luego npm link coffee-script o npm link express (si estás en una plataforma que admite enlaces simbólicos.) Entonces solo necesita actualizar la copia global para actualizar todos los enlaces simbólicos como bien.
 12
Author: soemarko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-28 07:53:59

Para abreviar, usa npm link jade en el directorio de tu aplicación.

 10
Author: sntran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 17:09:28

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

  1. Editar/añadir User variables (de la caja superior) en lugar de System variables (de la parte inferior); de lo contrario, tiene que "ejecutar como administrador" para que funcione.
  2. Anexe ;%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 establézcalo %AppData%\npm\node_modules para require('<pkg_name>') en scripts sin instalarlo en el directorio del proyecto. (Pero npm link se sugiere para este requisito si usted está trabajando en el sistema operativo con mklink como Vista y más reciente.)

Entorno de prueba:

  • Win 7 (Ent., 64-bit, SP1), Node.js 4.2.4, npm 2.14.12
  • Win 8.1 (Ent., 64-bit), Node.js 0.10.30, npm 1.4.21
 8
Author: Kong Kao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-05 17:16:47

Me encontré con este problema en Windows 7, ejecutando

npm install -g gulp

Como administrador mientras está conectado como 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 ruta de instalación y búsqueda predeterminada.

 5
Author: Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-26 20:28:00

Tuve un tiempo terrible conseguir módulos globales para trabajar. Eventualmente, agregué explícitamente C:\Users\yourusername\AppData\Roaming\npm a la variable PATH bajo Variables del Sistema. También necesitaba tener esta variable antes de la variable path de nodejs en la lista.

Estoy ejecutando Windows 10.

 5
Author: John Galt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-23 12:21:00

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

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

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
 3
Author: Saulius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-03 14:49:30

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

 3
Author: Kiki.J.Hu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-09 09:52:31

Alternativamente puede agregar a ~/.npmrc prefijo. Tengo C:\Program Files\nodejs para 64 Win7.

 1
Author: dmi3y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-18 18:08:49

Me topé con esta pregunta porque quiero usar node.js con visual studio 2015 en mi nuevo ordenador con Windows 10. Usé nodo.js en Windows 7 y 8 y 8.1 Nunca es un nodo problemático.js encontrando un módulo. Uso un nodo heredado.js 0.10.39 porque tengo que usar esta versión debido al módulo serial y RFXCOM.

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

 1
Author: wetlip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-23 16:22:10

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 se reconoce"

 1
Author: Bizz Websites,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-19 17:28:02

Tuve el mismo problema, tratando de instalar 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 Add to PATH > npm modules :

Mensaje en la instalación del nodo

introduzca la descripción de la imagen aquí

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

Seguro que no es necesario reinstalar nodo con usuario propio, como yo. La solución debe ser a través de variables 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 la opción Agregar a la ruta > módulos npm no ha sido marcada).

 1
Author: Gregorio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-14 10:45:12

Simplemente descargue y vuelva a instalar el nodo desde este y esto solucionará todos los problemas de ruta.

No se olvide de reiniciar el símbolo del sistema o terminal.

 0
Author: Mahendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-29 04:47:47

Si está utilizando windows , toma algunos pasos , 1) crear un archivo llamado paquete.json

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

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

2) codifique el directorio del proyecto y ejecute el siguiente comando

Instalación de Npm

Instala las dependencias

 -3
Author: Subbu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-13 13:23:34