Nodejs服务器(AWS)中的ERR_HTTP_HEADERS_SENT

时间:2019-12-24 06:55:39

标签: node.js google-cloud-functions

我再次要求提供此代码,请帮助谢谢。我正在使用okhttp3从Android使用Firebase函数调用此API,此处为以下代码。我已经在firebase中订阅了一个调用外部API的计划

Firebase Cloud功能代码

exports.CustomerProfile = functions.https.onRequest((req, res) => {

  const options = {
    method: "POST",
    uri: "http://3.xxxx.xx.xx2:3000/api/customers/profile",
    formData: {
      session_token: req.body.session_token
    },
    headers: {
      "content-type": "application/x-www-form-urlencoded",
      "x-auth-token": "xxxxxxE"
    },
    resolveWithFullResponse: true,
    json: true,
    simple: false
  };
  rp(options)
    .then(function(response) {
      res.send(response.body);
    })
    .catch(function(err) {
      res.send(err);
    });
});

API代码

router.post("/profile", async (req, res) =>{
    const customers = new Customers();

    var data = req.body;
    var token = req.body.session_token;
    customers.findBySessionToken(token, (err, result) => {
        if (!err) {    
          if(result[0].provider === 'gmail'){
              var gmail = result[0].access;
              customers.findByGmail(gmail, (err, result) => {
                  res.status(200).send(result);
              });
          }else if(result[0].provider === 'facebook') {
              var facebook = result[0].access;
              customers.findByFb(facebook, (err, result) => {
                  res.status(200).send(result);
              });
          }else if(result[0].provider === 'mobile') {
              var mobile = result[0].access;
              customers.findByMobile(mobile, (err, result) => {
                  res.status(200).send(result);

              });
          }
        } else {
          if (err.code === "ER_SIGNAL_EXCEPTION") {
            res.status(400).send([{ message: err.sqlMessage }]);
          } else {
            res.status(400).send(err);
          }
        }
    });
});

enter image description here

1 个答案:

答案 0 :(得分:0)

这意味着您已经在其他地方发送了响应res.send...,对于一个请求您不能做多个响应。