条带API未处理的拒绝响应错误

时间:2019-07-16 20:20:51

标签: node.js google-cloud-functions stripe-payments

我只是使用Stripe API在Firebase云函数中创建订阅。

我遇到了错误:未处理的拒绝 错误:发送标头后无法设置。

这是我的index.ts:

export const subscribe = functions.https.onRequest((req, res) => {
    res.header('Content-Type','application/json');
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    //respond to CORS preflight requests
    if (req.method == 'OPTIONS') {
        res.status(204).send('');
    }

    stripe.subscriptions.create({
        customer: req.body.sid,
        items: [
          {
            plan: "plan_123123123",
          },
        ]
      }, function(err, subscription) {
          // asynchronously called
          if (err) {
            return res.send(err)
          }
          else {
              return res.send(subscription)
          }
        }
      );
});

1 个答案:

答案 0 :(得分:1)

代替

if (req.method == 'OPTIONS') {
    res.status(204).send('');
}

尝试:

if (req.method == 'OPTIONS') {
    return res.status(204).send('');
}

否则,如果发生OPTIONS(飞行前)请求,则会两次调用res.send(),从而导致错误。