如何在NestJs邮件程序中注册Handlebars Intl助手

时间:2019-05-31 07:02:56

标签: handlebars.js nestjs

我需要在@ nest-modules / mailer中为我的数据实现某种格式,但是我得到的最好的是一个错误:“ formatNumber”未在...中定义

正如在formatjs.io/handlebars中发现的那样,我尝试将帮助程序注册到我的Handlebars

其中

import { HandlebarsAdapter, MailerModule } from '@nest-modules/mailer';
import { HandlebarsIntl } from 'handlebars-intl';

我尝试

const adapter = new HandlebarsAdapter();
HandlebarsIntl.registerWith(adapter);

但是我得到registerWith不是功能 和

MailerModule.forRoot({
  transport,
  defaults: {
    from: '"nest-modules" <_testaccount@sample.com>',
  },
  template: {
    dir: './templates',
    adapter: new HandlebarsAdapter(),
    options: {
      strict: true,
      helpers: HandlebarsIntl,
    },
  },
}),

此编译但抛出未在...中定义的“ formatNumber”

1 个答案:

答案 0 :(得分:0)

这有效。注册您自己的客户帮手和“车把帮手”:

const hbshelpers = require('handlebars-helpers');
const multihelpers = hbshelpers();

const helpersDM = {
    hlp: echo => `Echo: ${echo}.`,
    STATIC: `/static`,
};
const hbs = exphbs.create({
    layoutsDir: join(__dirname, 'views', 'layouts'),
    partialsDir: join(__dirname, 'views', 'partials'),
    extname: '.hbs',
    defaultLayout: 'base',
    helpers: {...multihelpers, ...helpersDM},
});
app.engine('.hbs', hbs.engine);
app.setViewEngine('.hbs');