para - ¿Nodejs no puede encontrar el módulo instalado en Windows?
node js para windows xp (17)
Estoy aprendiendo nodejs en este momento en Windows. Varios módulos se instalan globalmente con npm.cmd, y nodejs no pudo encontrar los módulos instalados. Tomemos por ejemplo el jade,
npm install jade -g
Jade se instala en el directorio "C:/Program Files (x86)/nodejs/node_modules"
, pero el siguiente código fallará con el 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 ayudarme a hacer que los módulos instalados globalmente funcionen en Windows?
Agregue una variable de entorno llamada NODE_PATH
y NODE_PATH
a %USERPROFILE%/Application Data/npm/node_modules
(Windows XP), %AppData%/npm/node_modules
(Windows 7/8/10), o donde npm termine de instalar los módulos Tu sabor de Windows. Para terminar con esto de una vez por todas, agregue esto como una variable del sistema en la pestaña Avanzadas 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 cuando se importan módulos en aplicaciones Node. Cuando quiera usar los binarios de los módulos instalados globalmente en su CLI, debe agregarlo también a su PATH
, pero sin la parte de node_modules
(por ejemplo, %AppData%/npm
en Windows 7/8/10).
Vieja historia
Soy bastante nuevo en node.js, por lo que no puedo estar del todo bien, pero desde mi experiencia funciona de esta manera:
- -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 tener que escribir la ruta completa en ellas. Es útil, por ejemplo, luego la aplicación de nodo está convirtiendo archivos locales, como menos , si lo instala globalmente, puede usarlo en cualquier directorio.
- node.js 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 escaneo en cada carpeta en la ruta, comenzando de la carpeta actual de node_modules y la verifica).
Vea la pregunta similar para obtener más detalles: ¿Cómo instalo un módulo globalmente usando npm?
Alternativamente, usted podría agregar al prefix derecho ~/.npmrc
. Tengo C:/Program Files/nodejs
para 64 Win7.
Desde mi experiencia con win8.1 npm instala módulos en C:/Users/[UserName]/AppData/Roaming/npm/node_modules
pero dumply los busca en 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");
Intenté agregar / editar variables de entorno y llegar a la conclusión de que:
- Editar / agregar
User variables
(del cuadro superior) en lugar deSystem variables
delSystem variables
(de la parte inferior); de lo contrario tienes que "ejecutar como administrador" para que funcione. - Agregue
;%AppData%/npm
a laPath
para usarla como una herramienta de línea de comandos (si es compatible, comojshint
ygrunt-cli
). - Cree
NODE_PATH
yNODE_PATH
%AppData%/npm/node_modules
pararequire(''<pkg_name>'')
en los scripts sin instalarlo en el directorio del proyecto. (Pero senpm link
para este requisito si está trabajando en un sistema operativo conmklink
como Vista y más reciente).
Entorno de prueba:
- Win 7 (Ent., 64 bits, 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
Me encontré con este problema en Windows 7, ejecutando
npm install -g gulp
como administrador mientras está conectado 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 topé 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 un problema con node.js al encontrar un módulo. Uso un node.js 0.10.39 heredado 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 localmente trago en la carpeta:
C: / Users / myaccount / AppData / Roaming / npm / node_modules
npm install gulp
Esto solucionó mi problema de "gulp no es reconocido"
Para Windows, todos dijeron que debería 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 [module] .cmd en C: / Archivos de programa / nodejs , y se usa para ejecutar el comando de la ventana. Entonces, si no agrega la ruta que contiene el archivo cmd a las variables de entorno % PATH% , no las iniciará con éxito a través de la ventana de comandos.
Para abreviar, use npm link jade
en el directorio de su aplicación.
Para hacerlo funcionar en Windows 10, lo resolví agregando la carpeta %USERPROFILE%/AppData/Roaming/npm
a mi PATH. Tener /node_modules
adjuntado así: %USERPROFILE%/AppData/Roaming/npm/node_modules/
no funcionó para mí.
Pasé un tiempo terrible haciendo que los módulos globales funcionaran. Finalmente, 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 de nodejs en la lista.
Estoy ejecutando Windows 10.
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 agregarlo a su ruta de variable global:
C:/Users/{USER}/AppData/Roaming/npm
Importante: solo esto sin la parte de node_modules
, me tomó media hora para ver esto.
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) codifique el directorio de su proyecto y ejecute el siguiente comando
npm instalar
Se instala las dependencias.
Simplemente descargue y vuelva a instalar el nodo desde this y esto solucionará todos los problemas de ruta.
No olvide reiniciar su línea de comandos o terminal.
Solo citaré de la publicación del blog de este nodo ...
En general, la regla de oro es:
- Si está instalando algo que desea usar en su programa, use require (''lo que sea''), luego 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, para que sus binarios terminen en su variable de entorno PATH.
...
Por supuesto, hay algunos casos en los que quieres hacer ambas cosas. Coffee-script y Express son buenos ejemplos de aplicaciones que tienen una interfaz de línea de comandos, así como una biblioteca. En esos casos, puedes hacer uno de los siguientes:
- Instálalo en ambos lugares. En serio, ¿eres tan corto en espacio en disco? Está bien, de verdad. Son pequeños programas de JavaScript.
- Instálelo globalmente, y luego npm link coffee-script o npm link express (si está en una plataforma que admite enlaces simbólicos). Entonces, solo necesita actualizar la copia global para actualizar también todos los enlaces simbólicos.
Tuve el mismo problema, tratando de instalar npm install -g bower
con npm install -g bower
Creo que esto fue porque el nodo fue instalado por otro usuario , no yo.
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
Después de la instalación del nodo, npm install -g bower
nuevamente. Y ahora funciona Bower.
Claro que no es necesario reinstalar el nodo con usuario propio, como yo. La solución debe ser a través de las 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 no se ha marcado la opción Agregar a RUTA> módulos npm ).
si está en la plataforma windows7, tal vez debería cambiar NODE_PATH de esta forma: %AppData%/npm/node_modules