jade扩展了express.js中的关键字问题

jade扩展了express.js中的关键字问题,express,pug,Express,Pug,好的,所以我在express中遇到了一个问题,即如何让我的模板使用extends/block关键字。我能够让索引模板正常工作;然而,当我尝试添加第二个模板时,“extends”似乎不起作用。我已经在下面粘贴了代码,希望您能提供帮助!(作为参考,我运行的是express 2.5.8版和node 0.6.12) app.js: var express = require('express') , routes = require('./routes'); var app = module.ex

好的,所以我在express中遇到了一个问题,即如何让我的模板使用extends/block关键字。我能够让索引模板正常工作;然而,当我尝试添加第二个模板时,“extends”似乎不起作用。我已经在下面粘贴了代码,希望您能提供帮助!(作为参考,我运行的是express 2.5.8版和node 0.6.12)

app.js:

var express = require('express')
  , routes = require('./routes');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'your secret here' }));
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
  app.set('view options', { layout: false, pretty: true });
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);
app.get('/login', routes.login);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port,     app.settings.env);
});
routes/index.js:

exports.index = function(req, res){
  res.render('index', { title: 'rm-dash-r' })
};

exports.login = function (req, res) {
    res.render('login', { title: 'rm-dash-r' })
};
在视图/目录中,有3个文件。index.jade、main-layout.jade和login.jade。对于测试,登录和索引是相同的文件

main-layout.jade:

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body(style='margin: 0 22%;')
    div.container
        div.header
            a(href='/')
                span rm-dash-r

        div.stripes
            span

        div.nav
            a(href='/') Blog
            a(href='/') About
            a(href='/') Projects
            div.clearer
                span

        div.stripes
            span

        div.main
            div.left
                div.content

                    block content
...
index.jade/login.jade:

extends main-layout

block content
    h1 testing
基本上,“/”的路由工作没有任何问题,但是登录路由将只呈现login.jade标记,除了页面顶部的扩展主布局


如果有任何其他有助于了解的信息,请让我知道。

好的,经过重大的尝试和错误,我似乎已经成功了。出于某种原因,在login.jade的第一行添加了一个返回(即扩展主布局现在是第2行)之后,一切似乎都正常了


我一点也不知道为什么会出现这种情况,但如果有人能透露一些信息,我很想听听。

我运行了您的代码,但无法重现您所说的错误。在内容块之后,主布局中是否还有其他内容?如果是,请尝试删除它,看看输出是否不同。之后尝试删除代码,但仍然看到相同的问题。您是否能够使/和/登录路径正常运行?您的系统上有哪些版本的express/node/jade?谢谢。jade:0.21.0 |节点v0.6.18 | express:2.5.8。。。你有在线托管代码吗?如果没有,我将尝试在github上创建一个:)我将在我的个人服务器上托管git repo以简化测试,但是如果您想要一份副本以查看是否可以重新生成问题,我可以向您发送一份。不过,我还是用下面的答案解决了这个问题。