我的 Restify 路线是异步的:
server.get("/verify", async (req, res) => { }
在此类路线中,我必须将用户的点击从电子邮件重定向到某些确认成功 html,并完成此路线上的旅程并执行 res.send
res.redirect(
{
something
},
next
);
res.send(200);
return
这不起作用。 Node.js 抛出“ReferenceError:next 未定义”,浏览器也发誓。
Restify 手册建议将“next”放置在示例中的位置。但这没有帮助。
我已经检查了建议的其他解决方案(req、res、next),这是不行的。异步工作起来轻而易举。
简直不敢相信如果你异步然后重定向就不起作用了,或者你呢?这对我来说是一条死胡同。我采用了同步方式,删除了所有代码只是为了测试重定向是否有效,结果确实如此。但这是一个死胡同,因为 Mongoose 将不再运行回调 - 出于所有充分的理由:
“Model.findOne() 不再接受回调”
我知道如何编写 Promise 并制作“回调地狱”。所以我确实尝试了,一切都是正确的并且会起作用。
如果您有任何解决办法,请告诉我。
亲切的问候, 尤里
由于此路线用于电子邮件确认以捕获来自电子邮件的点击并吐出一些 html 作为回报,因此解决方法是根本不使用 res.redirect。
相反,我们通过以下方式输出 html:
const html = "<html> EMAIL CONFIRMATION SUCCESSFUL! </html>";
res.writeHeader(200, { "Content-Type": "text/html" });
res.write(html);
res.end();