尝试将模板 html 插入 node-mailer 但出现错误 "ENOENT: no such file or directory, open"

Try to insert template html to node-mailer but get error "ENOENT: no such file or directory, open"

我使用 node-mailer,它工作正常,现在我尝试添加模板 html 但是当我尝试打开外部 html 文件时总是出错。

这是我的内联旧代码 html,它运行完美!

const sendSwitchBetweenStages = (flowID, flow, stageID, userName) => {
    const message = {
        to: userEmail(flow, stageID),
        subject: titleMessage(stageID),
        text: '',
        html: `
            <div dir="rtl">
              <h1> test </h1>
            </div>
          `
    };
    return emailerService.sendMail(message);
};

现在我尝试添加一个外部模板:

const sendSwitchBetweenStages = (flowID, flow, stageID, userName) => {
  const template = fs.readFileSync('./index.html',{ encoding:'utf-8' });
    const message = {
        to: userEmail(flow, stageID),
        subject: titleMessage(stageID),
        text: '',
        html: template
    };
    return emailerService.sendMail(message);
};

错误:Error: Uncaught (in promise): ENOENT: no such file or directory, open 'index.html'

index.html 它在同一个根上,我不知道是什么问题。

尝试给 fs.readFileSync 一个绝对路径而不是相对路径。

举个例子:

fs.readFileSync(path.resolve(__dirname, 'release.hbs')).toString('utf8')

所以你应该尝试或类似的东西:

fs.readFileSync(path.resolve(__dirname, 'index.html'),{ encoding:'utf-8' });

顺便说一句,你应该看看 handlebars。它非常适合创建模板。我在我当前的项目中使用了 nodemailer 和 handelbars 的这种组合。工作得很好。