无法使用快递加载玉石视图

我试图创build一个玉视图,并使用快递加载它。 path/正确加载,但是当我加载helloworld浏览器说Cannot get /helloworld

我创build了以下视图并将其保存到视图中:

 extend layout block content h1=title p Hello! Hello World! Welcome to #{title} 

routes/index.js我这样做了:

 exports.helloworld=function(req,res){ res.render('helloworld',{title:'Hello World!'}); }; 

app.js文件中:

 app.get('/helloworld',routes.helloworld); 

更新:

完整的app.js文件:

 /** * Module dependencies. */ 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.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('/helloworld',routes.helloworld); app.listen(3000, function(){ console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); }); 

我的routes.js

 exports.index = function(req, res){ res.render('index', { title: 'Express' }) }; exports.helloworld=function(req,res){ res.render('helloworld',{title:'Hello World!'}); }; 

layout.jade没有block content ,将其添加到layout.jade而不是body!=body导致此错误:

  Error: /home/anr/Desktop/node js/withdb/views/layout.jade:7 5| link(rel='stylesheet', href='/stylesheets/style.css') 6| body 

7 | #content 8 | 阻止内容

  Invalid indentation, you can use tabs or spaces but not both at Object.Lexer.indent (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/lexer.js:762:15) at Object.Lexer.next (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/lexer.js:870:15) at Object.Lexer.lookahead (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/lexer.js:114:46) at Parser.lookahead (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:100:23) at Parser.peek (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:77:17) at Parser.tag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:733:22) at Parser.parseTag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:719:17) at Parser.parseExpr (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:188:21) at Parser.block (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:689:25) at Parser.tag (/home/anr/Desktop/node js/withdb/node_modules/jade/lib/parser.js:806:26) 

所以,用空格缩进会导致一个空的页面layout.jade 。这是我目前的layout.jade

  doctype html html head title= title link(rel='stylesheet', href='/stylesheets/style.css') body block content 

Sublime Text缩进与four spacesTab

正如在评论中所讨论的, extend layout应该是extends layout

仅供参考,如果您有权访问服务器日志,则应显示在开发环境中。

我知道这个问题在八个月内还没有得到答复,但是对于那些仍在寻求帮助的人,我认为问题在于:

 res.render('helloworld',{title:'Hello World!'}); 

应该阅读

 res.render('index',{title:'Hello World!'}); 

因为接下来会利用索引路由器。

祝你好运!

/routes/index.js改变这个:

 exports.helloworld=function(req,res){ res.render('helloworld',{title:'Hello World!'}); }; 

对此:

 exports.helloworld=function(req,res){ res.render('index',{title:'Hello World!'}); }; 

会像魅力一样工作!

要不然…

在视图文件夹中创build一个helloworld.jade文件。 这是更推荐。

这两个解决scheme在技术上是正确的!