nunjucks:找不到模板

时间:2016-08-20 05:29:22

标签: node.js nunjucks

尝试渲染nunjucks模板但获取Error: template not found: email.html

server/
  views/
     email/
       email.html
  workers/
      email.worker.js
//email.worker.js
function createMessage(articles) {
   console.log(__dirname) // /<path>/server/workers

   nunjucks.configure('../views/email/');
   return nunjucks.render('email.html', articles);
}

不知道这里有什么问题。

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我的解决方案是使用路径模块:

const njk = require('nunjucks');

return njk.render(path.resolve(__dirname, '../views/email/' + 'email' + '.html'), articles);

答案 1 :(得分:2)

我有同样的问题。我是在documentation上找到的:

  

在节点中,“视图”将是相对于当前工作目录的路径。

如果在根目录下运行节点服务器,则模板路径将为server/views

 nunjucks.configure('server/views/email/');
 return nunjucks.render('email.html', articles);

就我而言,服务器脚本位于public目录中。

enter image description here

因此,当我从根目录运行服务器时,nunjucks配置将如下所示:

 nunjucks.configure('src/templates');
 return nunjucks.render('index.html', { name : 'Dian' });

有效。

但是,如果我从public目录运行服务器,则找不到模板。

答案 2 :(得分:2)

遇到相同的问题,请尝试这样做。如果您使用Express且有一个views文件夹:

来自nunjucks文档

var app = express();

nunjucks.configure('views', {
    autoescape: true,
    express: app
});

您可以使用nodejs的__dirname为您解析路径

nunjucks.configure(__dirname + '/views')...