Stripe Firebase 云函数 - res.send() 不是函数

Posted

技术标签:

【中文标题】Stripe Firebase 云函数 - res.send() 不是函数【英文标题】:Stripe Firebase Cloud Functions - res.send() is not a function 【发布时间】:2020-06-15 10:47:39 【问题描述】:

我是服务器开发的新手,正在尝试让我的云 Firebase 功能正常工作。当我的条带 webhook 触发时,我的 firebase 日志中出现了res.send() is not a function,但我不太清楚为什么。我很确定我错过了一些东西。我能得出的唯一结论是,这是因为我没有使用来自const app = express();App,但我看到它在其他地方使用过。

感谢任何和所有帮助/指导

我得到以下信息:

res.send() is not a function

res.end() is not a function

res.json() is not a function

处理res 的任何事情似乎都是个问题。

这是我的代码:

const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
const Chatkit = require('@pusher/chatkit-server');
const stripeToken = require('stripe')(functions.config().stripe.token);
const stripeWebhooks = require('stripe')(functions.config().keys.webhooks);
const express = require('express');
const cors = require('cors');
const endpointSecret = functions.config().keys.signing;
const request = require('request-promise');
const app = express();

app.use(cors( origin: true ));

exports.stripeCreateOathResponseToken = functions.https.onRequest(cors((req, res) => 

    const endpointSecret = "whsec_XXXXXXXXXXXXXXXXXXX";

    // Get the signature from the request header
    let sig = req.headers["stripe-signature"];

    let rawbody = req.rawBody;
    // res.send("testing res.send()"); // doesnt work. cant use res.send() here

    console.log("rawbody: " + rawbody);
    console.log("request.body: " + req.body);
    console.log("request.query.code: " + req.query.code);
    console.log("request.query.body: " + req.query.body);
    console.log("request.query.state: " + req.query.state);
    // console.log("res.body: " + res.json(received: true));
    stripeWebhooks.webhooks.constructEvent(req.rawBody, sig, endpointSecret);
    res.end("testing res.end()"); // doesnt work. cant use res.end() here
));



【问题讨论】:

为什么这个问题被否决了? 【参考方案1】:

这看起来不像将 cors 模块与 Cloud Functions for Firebase 一起使用的正确方法。试试这个:

exports.stripeCreateOathResponseToken =
functions.https.onRequest((req, res) => 
    return cors(req, res, () => 
        // put your function code here
    );
);

抄自official sample。

【讨论】:

以上是关于Stripe Firebase 云函数 - res.send() 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Flutter oAuth:如何开始使用OAuth和Stripe连接

使用 Firebase HTTP 函数(Firebase、Stripe OAuth、React (JSX) 前端)将授权代码返回到 Stripe

如何在 firebase 函数中检查 Stripe webhook 签名

使用 Firebase Cloud Functions 创建 Stripe Connect 帐户

iOS 中的 Stripe 集成 - 您没有提供 API 密钥?

Firebase 的云函数 - getaddrinfo ENOTFOUND