Error: no se puede encontrar el módulo 'ejs'

85

Aquí está mi error completo:

Error: Cannot find module 'ejs'
    at Function._resolveFilename (module.js:317:11)
    at Function._load (module.js:262:25)
    at require (module.js:346:19)
    at View.templateEngine (/Users/shamoon/local/node/lib/node_modules/express/lib/view/view.js:133:38)
    at Function.compile (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:65:17)
    at ServerResponse._render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:414:18)
    at ServerResponse.render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:315:17)
    at /Users/shamoon/Sites/soldhere.in/app.js:26:7
    at callbacks (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:272:11)
    at param (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:246:11)

Mi código fuente también es muy simple:

var express = require('express');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.use(express.bodyParser());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.set('view engine', 'ejs');
app.set('view options', {
    layout: false
});

app.get('/', function(req, res) {
  res.render('index', {
    message : 'De groeten'
  });
});

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

En mi carpeta, tengo ejs instalado en node_modules que usé npm install ejs. ingrese la descripción de la imagen aquíentonces mi pregunta es ... ¿qué da? ¿Qué estoy haciendo mal para que el nodo no pueda encontrar EJS cuando claramente lo tengo instalado?

Gracias

Shamoon
fuente
Lo siento, pero jajaja @ mensaje: 'De groeten'
Rob
1
¿Instalaste express globalmente? si recuerdo correctamente tuve problemas al instalar express globalmente y ejs localmente. intente también instalar express en la carpeta de su proyecto o ejs en la carpeta del módulo global.
pkyeck
Yo tuve el mismo problema. Terminé eliminando el directorio node_modules y haciendo una nueva instalación npm install -g.
Robert Walters

Respuestas:

149

Tuve exactamente el mismo problema hace un par de días y no pude resolverlo. No he logrado solucionar el problema correctamente, pero esto funciona como una solución temporal:

Sube un nivel (por encima de app.js) y hazlo npm install ejs. Creará una nueva carpeta node_modules y Express debería encontrar el módulo en ese momento.

maldad
fuente
15
npm install ejs -gpodría ser una solución más limpia. ( -gpara instalación global)
Farzher
2
Al implementar mi aplicación en Openshift, tuve el mismo error y noté que olvidé agregar una dependencia a ejsin packages.json. Ahora funciona bien ( npm installse hizo automáticamente durante el siguiente reinicio).
Bastien Jansen
1
No creo que quieras instalar un node_moduleglobalmente, he hecho lo mismo antes y se vuelve un problema cuando estás implementando
pourmesomecode
1
Simplemente agregué el módulo 'express' como una dependencia en mi archivo 'package.json' y comenzó a funcionar. Así que asegúrese de que tanto 'ejs' como 'express' se mencionen como dependencias.
Prateek
Obviamente, voté a favor de la respuesta principal (er) pero también quería darle crédito a @Stephen Bugs Kamenar por sugerir la instalación global (-g). De hecho, hice trampa e hice ambas cosas (perezoso) y funcionó inmediatamente después de reiniciar mi aplicación.
Mr. Benedict
22

Instalar express localmente

( npm install expressmientras está en el directorio raíz del proyecto)


Su proyecto depende de ambos expressy ejs, por lo que debe enumerarlos como dependencias en su package.json.

De esa manera, cuando ejecute el npm installdirectorio de su proyecto, instalará ambos expressy ejs, por lo que var express = require('express')será la instalación local de express (que conoce el ejsmódulo que instaló localmente) en lugar de la global, que no lo hace.

En general, es una buena idea enumerar explícitamente todas las dependencias en su package.json, aunque algunas de ellas ya estén instaladas globalmente, para que no tenga este tipo de problemas.

Será
fuente
9

Tuve el mismo problema. Una vez que configuré la variable de entorno NODE_PATH en la ubicación de mis módulos (/usr/local/node-v0.8.4/node_modules en mi caso), el problema desapareció. PS NODE_PATH acepta una lista de directorios separados por dos puntos si necesita especificar más de uno.

Pete
fuente
Esto es muy importante y a menudo se pierde, ¡+1 para ti, Pete!
javabeangrinder
1
No tenía NODE_PATH env var, por lo que un simple export NODE_PATH=.funcionó para mi proyecto que tiene sus dependencias en su propio directorio. Saludos
Greg
9

En mi caso, acabo de agregar ejs manualmente en package.json :

 {
   "name": "myApp"
   "dependencies": {
     "express": "^4.12.2",
     "ejs": "^1.0.0"
   }
 }

Y ejecute npm install (puede que necesite ejecutarlo con sudo ) Tenga en cuenta que ejs busca el directorio de vistas de forma predeterminada

levon
fuente
6

Hace mucho tiempo cuando me sucedió el mismo problema.

La dependencia estaba allí para ejs en el archivo JSON, intenté instalarlo local y globalmente, pero no funcionó.

Luego, lo que hice fue agregar manualmente el módulo mediante:

app.set('view engine','ejs'); 

app.engine('ejs', require('ejs').__express);

Entonces funciona.

Kael
fuente
esto es especialmente cierto cuando tiene express como una dependencia en el submódulo
user210504
Esto lo hace [ejs] detectable al compilar (o simplemente empaquetar si no usa mecanografiado) su servidor a través de webpack. (Sin embargo, se requiere copiar las vistas a dist o más trabajo para que funcione).
Daniel
5

Lo instalé ejsusando el comando npm install ejsen el nivel de directorio express y esto resolvió mi problema.

He instalado express usando los pasos mencionados en la guía express http://expressjs.com/guide.html

Ramesh Kotkar
fuente
4

Instálelo localmente en lugar de instalarlo globalmente. Entonces su proyecto puede ejecutarse en cualquier máquina sin ningún error. Creo que es mejor.

npm install express --save
npm install ejs --save
Fernando Chanaka
fuente
3

Tuve este problema. Realicé la depuración usando el inspector de nodos y vi que desde la carpeta node_modules donde estaban los archivos fuente express, ejs no estaba instalado. Así que lo instalé allí y funcionó.

npm install -g ejsno lo puse donde esperaba a pesar de que NODE_PATH se configuró en la misma carpeta node_modules. Prob haciéndolo mal, acaba de empezar con node.

Typo Johnson
fuente
3

Instalé ambos: express y ejs con la opción --save:

npm install ejs --save npm install express --save

De esta manera express y ejs son dependencias del archivo package.json.

colo
fuente
3

Reinstalar npm, express y ejs solucionó mi problema

Este funcionó para mí

  1. En su terminal o cmd -> Vaya a su directorio de aplicaciones,
  2. cd ruta ayourapp / AppName
  3. vuelva a ejecutar su 'npm install'
  4. Vuelva a ejecutar su 'npm install express'
  5. Vuelva a ejecutar su 'npm install ejs'

después de eso, se solucionó el error.

apelidoko
fuente
3

Después de haber instalado Express V xxx, debe elegir un motor de visualización de plantillas. Hay muchos realmente fáciles de aprender. Mi opción personal es EJS .

Otros realmente geniales y fáciles de aprender podrían ser:

Para instalar EJS (y corregir su error) Ejecute en la raíz de su proyecto:

npm install ejs

O si está usando Yarn:

yarn add ejs

A continuación, deberá solicitar el módulo, así que abra su archivo donde lo requiera expreso (generalmente app.js o server.js)

Agrega abajo var express = require('express');

var ejs = require('ejs');
Timm Jensen
fuente
3

Yo tuve el mismo problema. Así que hice lo siguiente y funcionó para mí.

solución:

  1. ejecute "npm init" en el directorio del proyecto si aún no lo ha hecho.
  2. instale ejs y exprese de la siguiente manera:

npm install ejs --save
npm install express --save

al hacerlo, crea las dependencias necesarias en el archivo package.json

Hemanta
fuente
2

PASO 1

Vea npm ls | grep ejsen el nivel raíz de su proyecto para verificar si ya ha agregadoejs dependency a su proyecto.

Si no, agréguelo como dependenciesa su proyecto. (Prefiero agregar dependencia en package.jsonlugar de agregar npm installel módulo).

p.ej.

{                                                                                                      
  "name": "musicpedia",                                                                                
  "version": "0.0.0",                                                                                  
  "private": true,                                                                                     
  "scripts": {                                                                                         
    "start": "node ./bin/www"                                                                          
  },                                                                                                   
  "dependencies": {                                                                                    
    "body-parser": "~1.15.1",                                                                          
    "cookie-parser": "~1.4.3",                                                                         
    "debug": "~2.2.0",                                                                                 
    "express": "~4.13.4",                                                                              
    "jade": "~1.11.0",                                                                                 
    "ejs": "^1.0.0",                                                                                                                                                            
    "morgan": "~1.7.0",                                                                                
    "serve-favicon": "~2.3.0"                                                                          
  }                                                                                                    
}   

PASO 2 descarga las dependencias

npm install

PASO 3 verifique el módulo ejs

$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0
prayagupd
fuente
¡Excelente! Hice todo lo anterior, pero no volvió a ejecutar npm install. Gracias.
N. Osil
¿estás diciendo npm installque no funcionó después de agregar "ejs": "^1.0.0"? Si es así, elimine esa línea e instálela de otra manera npm install ejs: npmjs.com/package/ejs . Debería agregar ejs: latest versiona package.json
prayagupd
2

Agregue dependencia package.jsony luego ejecutenpm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}
marwari
fuente
2

Creo que el motor de plantillas ejs no está instalado correctamente en su máquina. Simplemente instale el motor de plantillas usando npm

npm install ejs --save

luego incluya el siguiente código en app.js

app.set('view engine', 'ejs')
Codemaker
fuente
1

Tengo el mismo problema que se resuelve después de instalar el expreso en el directorio de mi proyecto. previamente lo instalé en el alcance global con la opción -g con el comando npm install.

Mohit
fuente
1

En mi caso, no hubo un error de sintaxis tonto, pero surgió el mismo error. Había instalado ejs y ejs-mate globalmente. Lo instalé localmente y encontré mi error resuelto.

Abhishek Srivastava
fuente
1

asegúrese de que sus dependencias en sus archivos package.json estén actualizadas. Intente reinstalarlos uno a la vez después de asegurarse también de que su NPM sea la última versión (actualizada). Funcionó para mí. Le aconsejo que ejecute npm installlos paquetes (eso es lo que funcionó en mi propio caso después de que se negó a funcionar porque agregué las dependencias manualmente).

douglas egiemeh
fuente
1

En mi caso fue un error estúpido, fue un error tipográfico en el middleware. Escribí app.set('view engine', 'ejs.');el punto que causó el error. Instalé ejs y express localmente

Surajit Mukherjee
fuente
1

Asegúrese de que todas las dependencias estén instaladas. npm install

Estaba haciendo una aplicación rápida para mí y me había olvidado de agregar express. Lanzó el error anterior.


fuente
1

Enfrento el mismo error para ejs, luego simplemente ejecuto node install ejs Esto instalará ejs nuevamente.

y luego también ejecutar npm installpara instalar node_modules nuevamente. Eso es trabajo para mí.

akshay_sushir
fuente
1

Me encontré con este problema después de que olvidé instalar ejs antes de la primera vez que ejecuté mi aplicación. Por alguna razón, ejs no se veía después de instalarlo más tarde. He encontrado una solución rápida, limpia y eficaz a este problema, que era reinstalar expresar mediante la ejecución de npm uninstall expresscontinuación npm install expressen el directorio local antes de reiniciar el servidor.

Duncan Jairo
fuente
0
app.set('view engine', 'ejs')

y luego en la terminal

npm install ejs --save 

resuelve el problema

Homam Bahrani
fuente
0

En mi caso, simplemente desinstalo y luego instalo ejs nuevamente.

npm uninstall ejs

luego

npm install ejs
Ian Natividad
fuente
0

npm install ejs --savetrabajó para mi ! ✅

En goormIDE, tenía esta configuración de archivo:

  • envase
    • main.js
    • package-lock.json
    • package.json
    • node_modules
    • puntos de vista
      • home.ejs

En mi archivo main.js, también tenía esta ruta

app.get("/", function(req, res){
res.render("home.ejs");
})

npm install ejs -gno agregó la dependencia correspondiente dentro del package.json. npm install ejs --savehizo. Ejecuté la línea de comando desde el directorio del contenedor. Manualmente, podría haberse agregado al package.json con: **

"dependencies": {
    "ejs": "^3.0.2",}

**

Tristan Bochu
fuente
0

npm i ejs --force

esto funcionó para mí

Hytham Defrawy
fuente
0

La instalación de express localmente resolvió mi mismo problema. npm i express - guardar

Shekhar Karna
fuente
¡Bienvenido al SO! ¿Porque y como? Express se instala localmente de forma predeterminada para el desarrollo.
peterh - Reincorpora a Monica el
0

Tuve el mismo problema y probé algunas de las soluciones dadas, pero aún así no funcionó. todo lo que hice fue ejecutar el comando "npx yarn" en la carpeta raíz de mi proyecto y eso fue todo.

MUNDO IMPRESIONANTE
fuente
-1

El error me golpeó cuando estaba trabajando en goormIDE. Esto sucede básicamente cuando los paquetes de nodos no están dentro del archivo en ejecución. El lugar donde se ejecuta app.js o home.js.

neeerajtk
fuente