Nodejs no puede encontrar módulo
-
21-12-2019 - |
Pregunta
Estoy recibiendo un error al intentar usar cualquier módulo global, Exemple:
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
Instalé el comando express:
npm install -g express
mi app.js:
var express = require('express');
y ejecutelo con Windows PowerShell o Nede.js Preguntar a Windows:
node app.js
No sé realmente lo que está equivocado, leí algo sobre las variables de medio ambiente en Windows, ¿puede ser esto?
Resuelto / actualizado
El problema fue: Las variables de entorno de Windows no estaban configuradas para la carpeta NPM. Busque su carpeta NPM y agregue la ruta en las variables de entorno.
Solución
Debe instalar Express localmente:
npm install express
Luego lo requiere como lo hiciste:
var express = require('express')
Otros consejos
SOLO PARA CITIR DE AQUÍ:
https://www.npmjs.org/doc/files/npm-folders.html
- Instalelo localmente si va a requerir ().
- Instalelo globalmente si va a ejecutarlo en la línea de comandos.
- Si necesita ambos, luego instálelo en ambos lugares, ni use npm link .
Estaba obteniendo el mismo error en Windows 7 / X64 y agregar seguimiento en la variable de entorno resolvió el problema:
NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules
* Reemplace [Nombre de usuario] con su nombre de usuario del sistema real
Estoy trabajando en Linux, pero cuando necesito expreso, lo estoy haciendo con un camino relativo a donde está instalado y funciona bien:
var express = require('./public/node_modules/express');
Estoy seguro de que lo mismo funcionaría con una ruta de Windows también.Si desea que sea más explícito y declare una ruta absoluta, esa sería la opción nuclear para asegurarse de que siempre sabe exactamente dónde se está cargando su módulo, independientemente de dónde se ejecuten sus scripts.
Si aún tiene un problema después de usar una ruta explícita, no sé cuál podría ser el problema...
Otra opción será ejecutar la instalación de NPM --Save Express