无法使用快递加载玉石视图
我试图创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 spaces
的Tab
。
正如在评论中所讨论的, 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在技术上是正确的!