使用`undefined的dust.js服务器端错误不是函数`

时间:2015-09-28 06:14:28

标签: node.js dust.js

我认为这是一个相当简单的服务器端灰尘模板,我填充数据并传递给邮件服务。

我使用

编译页面顶部的模板
var invite = fs.readFileSync('./views/mail/invite.dust', 'utf-8');
dust.compile(invite, 'invite');

然后在我的路线中,我将数据传递给dust.render通过

dust.render('invite', {link: link, email: email},
        function(err, html) {
        if (err) console.log('dust error', err, html);
        if (err) return next(err);
        mailObj.html = html;
        mailer(mailObj, next);
    });

在控制台中我得到dust error [TypeError: undefined is not a function] undefined

就我所知,dust.render方法正在期待一个函数。 https://github.com/akdubya/dustjs/blob/master/lib/dust.js#L12

那我在这里做错了什么?

我还添加了

var compiled = dust.compile(invite, 'invite');
dust.loadSource(compiled);

按照http://www.dustjs.com/guides/rendering/,但继续得到相同的错误

1 个答案:

答案 0 :(得分:1)

不是问题的解决方案,但事实证明我不需要直接使用灰尘。正如@Interrobang所说,我正在使用Kraken。我能够使用

从灰尘模板中获取灰尘html
res.render('mail/invite', {link: link, email: email}, function(err, html) {
   //mailer here
}); 

我希望express能够抱怨已经发送了标题,并且没有意识到如果一个函数作为第三个参数提供,则可能会进一步处理html。

如果不是出乎意料的话,所有人都愉快地结束了。