错误:无法查找视图 - >简单的代码

时间:2015-08-04 18:34:00

标签: javascript node.js express pug

我想编译一个包含动态内容的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)。 错误是什么意思?有一些像我的问题,但我不能适应我的情景......

提前致谢

1 个答案:

答案 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)