Nodejs / Express – '标题'不能渲染

我正在通过Sams“24小时内的Node.js”工作。 第8章给我困难(超过一个小时)! 示例07允许程序员创build一个页面,用户可以创build一个存储在MongoDb中的任务列表。 代码使用Express和Jade。 遵循指示一切正常…除了我注意到'标题'不是渲染,而是我得到一个通用的标题,路线的目录path。 我的问题是为什么? 我想我正确使用res.render,翡翠索引/布局文件同意作者的(检查https://github.com/shapeshed/nodejsbook.io )。

更新:因为它看起来像layout.jade被忽略,我删除它。 没有错误导致问题依然存在。 为什么/如何可以忽略layout.jade?

**结论**:'24小时内的Node.js'假设为Express 2。然而,在本书的安装说明中安装了Express 3,因此存在一些困难(下面的补救措施)。 请注意,本书的第8章介绍的是Node.js / Mongodb / Jade / Flash之后的最简单的介绍Jade(第6章),而不是Flash。 除非您已经是一个经验丰富的前端开发人员,否则需要一个多小时。

目录结构是:

\connect_to_mongo | |- \node_modules |- \public |- \routes |- \views | |- \tasks | | |- index.jade | | |- new.jade | |- index.jade | |- layout.jade |- app.js |- package.json 

app.js包含:

 app.get('/tasks/new', function(req,res) { Task.find({}, function(err,docs) { res.render('tasks/new.jade', { title:'New Tasks' }); }); }); 

layout.jade是:

 !!! html head title #{title} link(rel='stylesheet', href='http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css') body section.container!= body 

任务/ index.jade是:

 h1 Your tasks p a(href='/tasks/new', class='btn primary') Add a Task - if(docs.length) table tr th Task each task in docs tr td #{task.task} - else p You don't have any tasks! 

快递3(您可能正在使用)已不推荐使用布局。

相反,您需要使用模板inheritance :

 // layout.jade ... section.container block body 
 // tasks/index.jade extends ../layout block body h1 Your tasks ... 

或者,您可以安装Express 2而不是Express 3,因为如果您的书采用版本2,则可能会遇到其他问题:

 npm install express@2.5.11 

删除=

它应该是

 title #{title}