gpt4 book ai didi

javascript - 错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client ASYNC AWAIT not Working

转载 作者:行者123 更新时间:2023-12-02 21:01:20 24 4
gpt4 key购买 nike

我正在尝试验证 session 中是否有某些数据。如果没有, Controller 会将您重定向到另一条路线以获取该数据。问题是我收到错误“错误 [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置 header ”

我在 StackOverflow 上搜索,发现每个遇到此问题的人都使用 async/await 修复了它,但我已经在使用 async wait 了。

我们将非常感谢您的帮助!非常感谢!何塞

dashboardCtrl.init = async (req, res) => {
//
var frontdata = req.session;
if (!frontdata.user) {
frontdata.user = await userfacebook.findOne({ where: { 'email': frontdata.passport.user } });

};
if (!frontdata.store) {
tmpstoredata = await userstore.findOne({ where: { 'userfacebookId': frontdata.user.id } });
if (!tmpstoredata) {
res.redirect('/toURL');
};
};
};

注意:我正在使用 EJS MATE。如果我这样做

dashboardCtrl.init = async (req, res) => {
//
res.redirect('/toURL');
};

重定向有效,问题在于使用等待。所以我不知道如何继续

最佳答案

该错误表明您已经向客户发送了答复。换句话说,您正在尝试第二次声明 -> **res.*****。

如果您两次声明了对express的“res”的任何操作,请再次检查流程。

下面的解决方案可以让您拥有良好的结构化且可读的异步代码。

dashboardCtrl.init = (req, res) => {

// I think destructuring looks good
let { user, store } = req.session;

(async () => {
try {
if (!user) user = await userfacebook.findOne({ where: { 'email': frontdata.passport.user } });
let tmpstoredata;
if (!store) tmpstoredata = await userstore.findOne({ where: { 'userfacebookId': frontdata.user.id } });

if (!tmpstoredata) res.redirect('/toURL');

} catch (err) {
// don't forget ;)
}
})()
};

希望这可以帮助你。问候。

关于javascript - 错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client ASYNC AWAIT not Working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61346696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com