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
.
entonces mi pregunta es ... ¿qué da? ¿Qué estoy haciendo mal para que el nodo no pueda encontrar EJS cuando claramente lo tengo instalado?
Gracias
Respuestas:
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.fuente
npm install ejs -g
podría ser una solución más limpia. (-g
para instalación global)ejs
inpackages.json
. Ahora funciona bien (npm install
se hizo automáticamente durante el siguiente reinicio).node_module
globalmente, he hecho lo mismo antes y se vuelve un problema cuando estás implementandoInstalar express localmente
(
npm install express
mientras está en el directorio raíz del proyecto)Su proyecto depende de ambos
express
yejs
, por lo que debe enumerarlos como dependencias en supackage.json
.De esa manera, cuando ejecute el
npm install
directorio de su proyecto, instalará ambosexpress
yejs
, por lo quevar express = require('express')
será la instalación local de express (que conoce elejs
mó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.fuente
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.
fuente
export NODE_PATH=.
funcionó para mi proyecto que tiene sus dependencias en su propio directorio. SaludosEn 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
fuente
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.
fuente
Lo instalé
ejs
usando el comandonpm install ejs
en 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
fuente
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.
fuente
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 ejs
no 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.fuente
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.
fuente
Reinstalar npm, express y ejs solucionó mi problema
Este funcionó para mí
después de eso, se solucionó el error.
fuente
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:
O si está usando Yarn:
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');
fuente
Yo tuve el mismo problema. Así que hice lo siguiente y funcionó para mí.
solución:
npm install ejs --save
npm install express --save
al hacerlo, crea las dependencias necesarias en el archivo package.json
fuente
PASO 1
Vea
npm ls | grep ejs
en el nivel raíz de su proyecto para verificar si ya ha agregadoejs
dependency
a su proyecto.Si no, agréguelo como
dependencies
a su proyecto. (Prefiero agregar dependencia enpackage.json
lugar de agregarnpm install
el 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
PASO 3 verifique el módulo ejs
$ npm ls | grep ejs musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia ├── ejs@1.0.0
fuente
npm install
que no funcionó después de agregar"ejs": "^1.0.0"
? Si es así, elimine esa línea e instálela de otra maneranpm install ejs
: npmjs.com/package/ejs . Debería agregarejs: latest version
a package.jsonAgregue dependencia
package.json
y luego ejecutenpm install
{ ... ... "dependencies": { "express": "*", "ejs": "*", } }
fuente
Creo que el motor de plantillas ejs no está instalado correctamente en su máquina. Simplemente instale el motor de plantillas usando npm
luego incluya el siguiente código en app.js
app.set('view engine', 'ejs')
fuente
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.
fuente
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.
fuente
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 install
los paquetes (eso es lo que funcionó en mi propio caso después de que se negó a funcionar porque agregué las dependencias manualmente).fuente
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 localmentefuente
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
Enfrento el mismo error para ejs, luego simplemente ejecuto
node install ejs
Esto instalará ejs nuevamente.y luego también ejecutar
npm install
para instalar node_modules nuevamente. Eso es trabajo para mí.fuente
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 express
continuaciónnpm install express
en el directorio local antes de reiniciar el servidor.fuente
app.set('view engine', 'ejs')
y luego en la terminal
resuelve el problema
fuente
En mi caso, simplemente desinstalo y luego instalo ejs nuevamente.
luego
fuente
npm install ejs --save
trabajó para mi ! ✅En goormIDE, tenía esta configuración de archivo:
En mi archivo main.js, también tenía esta ruta
app.get("/", function(req, res){ res.render("home.ejs"); })
npm install ejs -g
no agregó la dependencia correspondiente dentro del package.json.npm install ejs --save
hizo. 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",}
**
fuente
esto funcionó para mí
fuente
La instalación de express localmente resolvió mi mismo problema. npm i express - guardar
fuente
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.
fuente
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.
fuente