在Node.js Express.js方法之间传递变量

在Node.js Express.js方法之间传递变量,node.js,express,Node.js,Express,我是Node.js的新手,我正在尝试将用户名参数从app.post()传递到readHtml(),但它没有定义,我尝试在函数之前声明变量,并在其中赋值,然后我收到的电子邮件不需要替换就发送了 app.post('/sendmail', (req, res) => { console.log("mail request came"); var userName1 = req.body.userInfo.userName; sendMail(userMail1, in

我是Node.js的新手,我正在尝试将用户名参数从app.post()传递到readHtml(),但它没有定义,我尝试在函数之前声明变量,并在其中赋值,然后我收到的电子邮件不需要替换就发送了

app.post('/sendmail', (req, res) => {
    console.log("mail request came");
    var userName1 = req.body.userInfo.userName;

    sendMail(userMail1, info => {
        console.log(`The mail has beed sent`);
        res.send(info);
    });

}); 

readHTMLFile(__dirname + '/mail.html', function(err, html) {
    var template = handlebars.compile(html);
    var replacements = {
         userName: userName1,
    };
    htmlToSend = template(replacements);
});


async function sendMail(user, callback) {
    let transporter = nodeMailer.createTransport({
        host: '',
        port: 465,
        secure: true,
        auth: {
            user: config.email,
            pass: config.password
        }
    });

    let mailOptions = {
        from: config.email,
        to: user,
        subject: 'Reservation',
        html:htmlToSend,
        attachments: [
    {
      filename: 'logo-01.png',
      path: __dirname + '/img/rsz_1logo-01.png',
      cid: '' 
    }]
    }

    let info = await transporter.sendMail(mailOptions);

    callback(info);
}

对readHTMLFile文件的回调(仅在启动时执行一次)应仅将模板编译为函数

var template;
readHTMLFile(__dirname + '/mail.html', function(err, html) {
    template = handlebars.compile(html);
});
替换应该发生在为每个请求执行的sendMail函数中(其中您有一个对用户对象的引用)

让邮件选项={
发件人:config.email,
致:用户:,
主题:“预订”,

html:template({userName:user.name}),//对readHTMLFile文件的回调(仅在启动时执行一次)应仅将模板编译为函数

var template;
readHTMLFile(__dirname + '/mail.html', function(err, html) {
    template = handlebars.compile(html);
});
替换应该发生在为每个请求执行的sendMail函数中(其中您有一个对用户对象的引用)

让邮件选项={
发件人:config.email,
致:用户:,
主题:“预订”,
html:template({userName:user.name})//