Node.js 将数据传递到emailTemplate ejs文件时出现问题
我正在尝试将令牌传递给电子邮件模板,该模板是一个ejs文件,即emailTemplate.ejs 但它不是作为数据呈现,而是作为测试呈现,即令牌变量作为令牌文本呈现。 代码如下:Node.js 将数据传递到emailTemplate ejs文件时出现问题,node.js,express,web,ejs,Node.js,Express,Web,Ejs,我正在尝试将令牌传递给电子邮件模板,该模板是一个ejs文件,即emailTemplate.ejs 但它不是作为数据呈现,而是作为测试呈现,即令牌变量作为令牌文本呈现。 代码如下: sendgridMail.setApiKey(sendGridApi) const email = async (req, res, next) => { const user = await User.findOne({ email: req.body.email }) let token if
sendgridMail.setApiKey(sendGridApi)
const email = async (req, res, next) => {
const user = await User.findOne({ email: req.body.email })
let token
if (user) {
token = user.tokens.slice(-1)[0].token
console.log('token before sending email ', token)
}
const filePath = path.join(__dirname, '/../../views/emailTemplate.ejs')
// TO PASS TOKEN TO EMAIL TEMPLATE EJS FILE
ejs.renderFile(filePath, { token: token }, (err, data) => {
if (err) {
console.log('Error in renderFile ', err)
} else {
// console.log('ejs data ', data)
const message = {
to: req.body.email,
from: 'services@codeuino.com',
subject: `Welcome to Donut ${req.body.name.firstName}`,
html: data
}
sendgridMail.send(message).then(
() => {
console.log('sending email')
next()
},
(error) => {
res.status(HttpStatus.BAD_REQUEST).send({
error: process.env.SENDGRID_API_KEY
? error.response.body
: 'Setup SENDGRID_API_KEY environment variable'
})
}
)
}
})
}
下面是试图呈现URL的电子邮件模板EJ
<p>http://localhost:5000/user/activate/ <=% token %></p> // TOKEN IS NOT GETTING RENDERED HERE
我认为这只是一个ejs语法错误。 将参数传递给模板应该如下所示
啊。。一个简单的打字错误毁了我的一天。非常感谢@stefan!你救了我。任何人都可能遇到:祝你有愉快的一天
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')