2012-07-29 78 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在當前項目目錄,它解決了我的問題!