提问人:Azz972 提问时间:11/5/2023 更新时间:11/5/2023 访问量:34
Express路由器上的Promise不能工作两次
Promise on Express router don't work twice
问:
我是 Node.js 和 Express(或者更确切地说是通道)的初学者。 很简单,我尝试通过嵌套两个路由器来进行电子邮件检查。它可以工作,但是当我在不重新启动服务器的情况下第二次尝试时,它可以工作一半: 我收到邮件,确认邮件时路由器收到确认,路由器在浏览器上显示“邮件验证成功”,然后什么都没有。没有错误消息,但其余指令未被读取(“try/catch”中的所有内容)。 但是,当我等待 setTimout 结束时,catch 条件会激活并执行 catch 中的指令。我不明白
router.post('/send', async (req, res) => {
const token = jwt.sign({ //Creation of the JsonWebToken
data: 'Token Data'
}, 'MySecretKey', { expiresIn: '5m' }
);
const mailConfigurations = {
// It should be a string of sender/server email
from: '[email protected]',
//User mail to verify
to: req.body.emailPretension,
// Subject of Email
subject: 'Vérification',
html:`<body>...</body>`,
};
transporter.sendMail(mailConfigurations, function(error, info){
if (error) throw Error(error);
console.log('Email Sent Successfully');
});
let WaitConfirmation = async () => {
return new Promise((resolve,reject) => {
router.get('/response', async (req, res) => {
const tokenReceived = req.query.token;
jwt.verify(tokenReceived, 'MySecretKey', function(err, decoded) {
if(err){
res.send("Email verification failed, possibly the link is invalid or expired");
reject("Email verification failed, possibly the link is invalid or expired");
}
else{
resolve("Email verifified successfully");
res.send("Email verification success");
}
});
})
setTimeout(()=>{
reject();
},300000) //300 000 = 5min
})
}
try{
let test = await WaitConfirmation();
res.json({response:true});
}
catch{
console.log(Error response");
}
});
我尝试了几种设备,什么都没有。我尝试用router.get('/response/:token')改变路由器名称,什么都没有。我也试图停止嵌套路由器,但我没有这样做的技能。
答: 暂无答案
评论
send