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

标签 javascript node.js express redirect ejs

我正在尝试验证 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/

相关文章:

javascript - 每列的总和不基于 jQuery 中的类

node.js - 云函数中从firebase实时数据库查询数据

javascript - NodeJS,不关闭mysql连接

node.js - 无法使用 Node.js 从 MongoDB slave 读取

node.js - 如何使用node.js创建 session ?

JAVASCRIPT - 取消隐藏类

javascript - 从嵌入式文档中删除字段

javascript - 从 url 调用 Nodejs 函数

javascript - 如何使用 express router 正确调用 passport.js 函数?

javascript - 如何让 map 区域背景颜色改变?