@AlexMark

Как получить html код страницы срендереной через handlebars в node.js?

Иду по туториалу node.js В уроках используется pug, я же пользуюс hbs. Более менее успешного переводил, пока не столкнулся с проблемой рендеринга письма. В самом уроке такой код
const nodemailer = require('nodemailer');
const pug = require('pug');
const juice = require('juice');
const htmlToText = require('html-to-text');
const promisify = require('es6-promisify');

const transport = nodemailer.createTransport({
 host: process.env.MAIL_HOST,
 port: process.env.MAIL_PORT,
 auth: {
  user: process.env.MAIL_USER,
  pass: process.env.MAIL_PASS
 }
});

 const generateHTML = (filename, options = {}) => {
  const html = pug.renderFile(`${__dirname}/../views/email/${filename}.pug`, 
  options);
   const inlined = juice(html);
return inlined;
 };

 exports.send = async (options) => {
   const html = generateHTML(options.filename, options);
   const text = htmlToText.fromString(html);

  const mailOptions = {
    from: `Wes Bos <noreply@wesbos.com>`,
    to: options.user.email,
    subject: options.subject,
    html,
    text
  };
   const sendMail = promisify(transport.sendMail, transport);
   return sendMail(mailOptions);
  };

Ну и собственно при клике на кнопку пользователю формируеться из шаблона письмо с данными из (options). Я вот не пойму как мне также повторить renderFile, только для hbs вида файлов...
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Abcdefgk
Проблема в этой строчке что ли - const html = pug.renderFile(`${__dirname}/../views/email/${filename}.pug`)?
У хенделбарса, кажется, метод называется compile
const html = hbs.compile(`${__dirname}/../views/email/${filename}.hbs`)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы