微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js:res.send不是一个函数

如何解决node.js:res.send不是一个函数

我真的无法弄清楚此函数有什么问题,因为它说res.send不是一个函数

exports.createEphemeralKeys = functions.https.onCall((req,res) => {

console.log("this is the req",req)
var api_version = req["api_version"];
var customer_id = req["customer_id"]
var api_version1 = "2018-08-23"
// var customerId = req.body.customer_id;
console.log("apiver",api_version)
console.log("customer id ",customer_id)

if (!api_version) {
  res.status(400).end();
  return;
}
const key = stripe.ephemeralKeys.create(
    {customer: customer_id},{apiVersion: api_version1}
).then((key) => {
    // asynchronously called
    
    console.log("creating key ",key)
    res.send(key);
    return key
}).catch(err =>{
        console.log(err);
});

});

显示错误

TypeError:res.send不是函数

我该如何解决

解决方法

我认为您编写了错误的代码库。 functions.https.onCall。此方法有两个参数。数据和上下文,其中context是这样的可选参数:

exports.fullName = functions.https.onCall((data,context) => {
});

但是您尝试将其用作响应。 因此,我建议您使用https.onRequest而不是onCall,这样您就可以使用响应了。

,

您需要使用res.end而不是res.send原因Res.send是Express的一部分

,

这似乎是一个Firebase函数调用,因此要发送回响应,您可以只返回要发送回的内容(已经在执行)。

只需从函数中取出res.send(第二个参数是context而不是res)。

context保存有关用户身份验证的信息。 更多信息在这里-https://firebase.google.com/docs/functions/callable

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。