Error: Failed to lookup view -> simple code
Error: Failed to lookup view -> simple code
我想编译一个包含动态内容的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)。
错误是什么意思?有几个问题和我一样,但是我不能适应我的场景...
提前致谢
您正在尝试将呈现 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)
.
我想编译一个包含动态内容的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)。 错误是什么意思?有几个问题和我一样,但是我不能适应我的场景...
提前致谢
您正在尝试将呈现 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)
.