2012-07-29 76 views
5

我在O'Reilly的书“Node.js Up and Running”第2章中的“Let's build twitter”节点应用程序中感到非常沮丧。EJS错误:未定义;找不到模块'undefined';找不到模块'ejs'; body not defined

我从来没有使用EJS,甚至不知道什么扩展名为EJS文件。此外,我不能让我的应用程序的工作得到这些各种错误:

  • 部分没有被定义
  • 找不到模块“未定义”这里做app.render(“指数” ...
  • 无法Find模块“EJS”
  • 体没有被定义

它甚至更令人沮丧的,因为这仅仅是第2章,我想知道,如果不最好切换到另一种材料它...

+0

因为你没有提供任何信息,所以不可能对任何人做出回答......:/ – Esailija 2012-07-29 22:43:43

+0

我只是想帮助像我这样的人,他们**正在阅读**这本书,让他们的应用程序工作。 – Tinou 2012-07-29 22:58:09

回答

10

如果您也对O'Reilly Up and Running Book中的“Let's build twitter”编程教程感到沮丧,下面是使这个“app”起作用的补充。

先决条件:

  1. 为这个应用程序的工作,请确保您有一个版本快递< 3.x中的实际上,在版本3.0和更高版本中,他们删除了“部分”支持,现在是模板特定的。所以请确保安装版本2.x:npm install [email protected]
  2. 本书不提供任何有关如何使用EJS文件的信息。经过一些研究,为了让快车了解并解析EJS文件,您必须安装... ejs。 与其他模块一样,安装非常简单:npm install ejs

肉:

  1. 对于这个应用程序,该文件夹中的所有文件viewspartials应具有扩展.ejs
  2. 您安装EJS但你必须告诉快递使用EJS作为在app.render()函数模板格式 有两种方式做到这一点:

(1)您可以设置EJS作为默认模板引擎和ñ只是告诉表达来呈现你的文件 app.set('view engine', 'ejs');

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

(2)你只告诉给app.render()功能使用EJS,表示会照顾它

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

如果在那点它不起作用或者它仍然不清楚,没有什么比看工作代码更好。叉或下载应用here

希望它可以帮助其他读者。

+0

没有ejs删除部分支持?我似乎记得询问谷歌集团,他们说他们做到了。 – lostAstronaut 2012-07-29 23:59:14

+0

好吧,我使用express 2.5.11和ejs 0.8.0来确保使用与本书相同的*版本。但是在Express 3.x中不支持partials。 – Tinou 2012-07-30 00:18:49

+0

手把支持express3。我现在正在使用它。 – lostAstronaut 2012-07-30 01:03:20

0

O'Reilly出版的Node.js运行起来 - 第1 =>第2章做一些有意思的事情=>让我们建立的Twitter(工作代码快车3.0和EJS使嵌入ed JavaScript for node renderer without partials) 下载来源:https://github.com/thinkphp/express-tweets

-1

我已经安装了express @ 4并解决了问题。 如果我们在编辑器中编写任何代码,它会显示错误。

问候, Ningappa

1

安装快车@ 4在当前项目目录,它解决了我的问题!