我想编译一个包含动态内容的jade文件。 我的代码来自http://jade-lang.com/tutorial/:
app.get('/test', function(request, response){
var fn = jade.compileFile('views/test.jade');
var htmlOutput = fn({
maintainer: {
name: 'Forbes Lindesay',
twitter: '@ForbesLindesay',
blog: 'forbeslindesay.co.uk'
}
});
response.render(htmlOutput);
});
我收到以下错误:
Error: Failed to lookup view "<!DOCTYPE html><html lang="en"><h1></h1>Maintainer: Forbes L
indesay</html><table><tr><td>Twitter</td><td>@ForbesLindesay</td></tr><tr><td>Blog</td><td
>forbeslindesay.co.uk</td></tr></table>" in views directory "D:\test.js\views" "<!DOCTYPE html><html lang="en"><h1></h1>Maintainer: Forbes L
indesay</html><table><tr><td>Twitter</td><td>@ForbesLindesay</td></tr><tr><td>Blog</td><td
>forbeslindesay.co.uk</td></tr></table>" in views directory "D:\test.js\views"
似乎变量是正确的(取自route.js)。 错误是什么意思?有一些像我的问题,但我不能适应我的情景......
提前致谢
答案 0 :(得分:2)
您正在尝试将呈现Jade模板的独立方法与Express为您呈现它们的能力相结合。
试试这个:
app.get('/test', function(request, response) {
response.render('test.jade', {
maintainer: {
name: 'Forbes Lindesay',
twitter: '@ForbesLindesay',
blog: 'forbeslindesay.co.uk'
}
});
});
确保Express配置正确。在Express设置中,使用:
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
这假定views/
目录是您从中调用response.render()
的.js文件的直接子目录。更多信息here。
如果您确实想要使用jade.compileFile()
,可以使用@ArtemBaranovskii发表的评论中的建议并使用response.send(htmlOutput)
。