2011-10-13 39 views
55

Aquí está mi error completo:Error: No se puede encontrar módulo 'ejs'

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 es también 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 instalados en node_modules cuales Conseguí usar npm install ejs. enter image description here así que mi pregunta es ... ¿qué da? ¿Qué estoy haciendo mal para que el nodo no pueda encontrar EJS cuando claramente lo tengo instalado?

Gracias

+0

Lo sentimos, pero lol @ message: 'De groeten' – Rob

+1

instaló express globalmente? si mal no recuerdo tuve problemas al instalar express globalmente y ejs localmente. intente también instalar express en su carpeta de proyecto o ejs en la carpeta del módulo global. – pkyeck

Respuesta

87

tenía este mismo problema hace un par de días y no podían entenderlo. no han logrado solucionar el problema correctamente, pero esto funciona como una solución temporal:

subir un nivel (por encima app.js) y hacer npm install ejs. Creará una nueva carpeta node_modules y Express debería encontrar el módulo entonces.

+7

'npm install ejs -g' podría ser una solución más limpia. ('-g' para la instalación global) –

+3

Hice la -g cosa y todavía no puedo encontrarlo ... – BigOmega

+1

Al implementar mi aplicación en Openshift, tuve el mismo error y noté que olvidé agregar una dependencia a' ejs 'in' packages.json'. Ahora funciona bien ('npm install' se realizó automáticamente durante el próximo reinicio). –

7

Tuve el mismo problema. Una vez que establecí 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ó. PD NODE_PATH acepta una lista de directorios separados por dos puntos si necesita especificar más de uno.

+0

Esto es súper importante y a menudo se pierde, +1 a usted Pete! – javabeangrinder

+1

No tenía NODO_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

2

Tuve este problema. Depuré usando node-inspector y vi que desde la carpeta node_modules donde estaban los archivos fuente express, ejs no estaba instalado. Entonces 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 hacerlo mal, acaba de comenzar con el nodo.

14

Instalar expresan localmente

(npm install express mientras que en el directorio raíz del proyecto)


Su proyecto depende tanto express y ejs, por lo que debe enumerarlos tanto como dependencias en su package.json.

De esta forma cuando se ejecuta npm install en que directorio del proyecto, que va a instalar tanto express y ejs, por lo que será el var express = require('express') instalación local de expreso (que sabe sobre el módulo de ejs que se ha instalado localmente) en lugar de el global, que no.

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, por lo que no tiene estos tipos de problemas.

4

Instalé ejs usando el comando npm install ejs en el nivel de directorio express y esto resolvió mi problema.

TENGO instalar expresa utilizando los pasos mencionan en la guía expreso http://expressjs.com/guide.html

4

I mi caso, me acaba de agregar manualmente en ejs paquete.JSON:

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

corrámoslo NPM instalación (puede ser que necesite ejecutarlo con sudo) Tenga en cuenta, que ejs ve directorio de puntos de vista por defecto

1

que tienen el mismo problema que resolver después de instalar el expreso en mi directorio de proyectos. anteriormente lo instalo en alcance global con la opción -g con el comando npm install.

3

que instalé: expresan y ejs con la opción --save:

NPM instalan ejs --save NPM instalar expresa --save

De esta manera expresa y ejs son dependecies archivo package.json .

0

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

2

PASO 1

Ver npm ls | grep ejs a nivel de la raíz de su proyecto para comprobar si ya ha añadido ejsdependency a su proyecto.

Si no, agréguela como dependencies a su proyecto. (yo prefiero la adición de la dependencia a package.json en lugar de npm install ing del módulo.)

por ejemplo.

{                          
    "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 de descarga las dependencias

npm install 

PASO 3 cheque módulo ejs

$ npm ls | grep ejs 
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia 
├── [email protected] 
+0

¡Genial! Hizo todo lo anterior, pero no ejecutó npm instalar de nuevo. Gracias. –

+0

¿Estás diciendo '' npm install' no funcionó después de agregar '" ejs ":"^1.0.0 "'? Si es así, elimine esa línea e instálela de otra forma como 'npm install ejs' - https://www.npmjs.com/package/ejs. Debería agregar un 'ejs: latest version' a package.json – prayagupd

+1

Quise decir que funcionó muy bien. Gracias. –

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

y luego en el terminal

npm install ejs --save 

resuelve el problema

1

En mi caso no hubo un error de sintaxis tonto, pero arised mismo error. He instalado ejs y ejs-mate globalmente. Lo instalé localmente y encontré mi error resuelto.

0

amablemente 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 para los paquetes (eso es lo que funcionó en mi propio caso después de que se negó a funcionar porque agregué las dependencias manualmente).

2

Instalarlo 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 
0

la reinstalación de la NGP, ejs expresas y fijo mi problema

Ésta funcionó para mí,

  1. En su terminal o cmd -> Ir a su directorio de aplicaciones,
  2. cd pathtoyourapp/AppName
  3. vuelva a ejecutar su instalación 'npm'
  4. vuelva a ejecutar su 'npm install express'
  5. vuelva a ejecutar el NPM 'instalar' ejs

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

Cuestiones relacionadas