2012-07-29 22 views
5

He estado muy frustrado con la aplicación de nodo "Construyamos Twitter" en el Capítulo 2 del libro de O'Reilly "Node.js Up And Running".Errores de EJS: no definidos; no se puede encontrar el módulo 'indefinido'; no se puede encontrar el módulo 'ejs'; el cuerpo no está definido

Nunca he usado EJS y ni siquiera sé qué extensión poner para los archivos EJS. Además, no puedo conseguir mi aplicación trabaja conseguir estos varios errores:

  • parcial no se define
  • No se puede encontrar el módulo 'indefinido', donde haciendo app.render ('índice' ...
  • No se puede hallazgo módulo '' ejs
  • cuerpo no se define

es aún más frustrante, ya que es sólo el Capítulo 2 y me pregunto si no sería preferible cambiar a otro material ...

+0

Habría sido imposible responder por cualquier otra persona ya que no proporciona ninguna información ...:/ – Esailija

+0

Solo intento ser útil para personas como yo que ** actualmente están leyendo ** el libro y pueden hacerlo ' t obtener su aplicación funcionando. – Tinou

Respuesta

10

Si también se ha sentido frustrado con el tutorial de programación "Construyamos twitter" en el Capítulo 2 del libro O'Reilly Up and running, aquí está el complemento para que funcione esta "aplicación".

Pre-requisitos:

  1. Para esta aplicación funcione, asegúrese de que tiene una versión de expreso < 3.X. De hecho, en la versión 3.0 y superior eliminaron el soporte "parcial" y ahora es específico de la plantilla. Así que asegúrese de instalar una versión 2.x de esta manera: npm install [email protected]
  2. El libro no proporciona ninguna información sobre cómo usar los archivos EJS. Después de un poco de investigación, para que el expreso entienda y analice el archivo EJS, debe instalar ... ejs. La instalación es bastante sencilla como cualquier otro módulo: npm install ejs.

La carne:

  1. Para esta aplicación, todos los archivos de la carpeta views y partials deben tener la extensión .ejs
  2. Ha instalado EJS, pero hay que decir expreso para utilizar como EJS el formato de la plantilla en la función app.render() tienes dos maneras de hacerlo:

(1) se establece EJS como el motor de la plantilla por defecto y el n simplemente decirle expresar para hacer su archivo app.set('view engine', 'ejs');

res.render('index', ...)

(2) Usted acaba de decir que la función app.render() usar EJS, expresa se hará cargo de ella

res.render('index.ejs', ...)

Si en ese punto no funciona o aún no está claro, nada es mejor que mirar el código de trabajo. Tenedor o descarga la aplicación here.

Espero que ayude a otros lectores.

+0

¿No eliminó ejs el soporte parcial? Parece que recuerdo haber preguntado en el grupo de google y me dijeron que sí. – lostAstronaut

+0

Bueno, estoy usando express 2.5.11 y ejs 0.8.0 para asegurarme de usar la * misma * versión que en el libro. Pero en Express 3.x no hay soporte para parciales. – Tinou

+0

El manillar admite parciales con express3. Lo estoy usando ahora mismo. – lostAstronaut

0

O'Reilly libro Node.js en marcha y funcionando - Parte 1 => Capítulo 2 haciendo cosas interesantes => Construyamos Twitter (código de trabajo para Express 3.0 y ejs embedd ed JavaScript para renderizador de nodo sin parciales) fuente de descarga: https://github.com/thinkphp/express-tweets

-1

He instalado express @ 4 y resuelto el problema. si escribimos cualquier código al lado del editor y mostrará ese error.

Saludos, Ningappa

1

Instalar Express @ 4 en el directorio del proyecto actual, se resolvió mi problema!

Cuestiones relacionadas