Javascript 云函数Firebase request.body未定义

Javascript 云函数Firebase request.body未定义,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,用户端:使用fetch函数的POST方法: let response=wait-fetch(url、{ “方法”:“发布”, “标题”:{ “内容类型”:“应用程序/json” }, “body”:JSON.stringify({“stripeToken”:token.id}) }); 服务器端:要获取的URL是Firebase云函数: const functions=require('firebase-functions'); const cors=require('cors')({orig

用户端:使用fetch函数的POST方法:

let response=wait-fetch(url、{
“方法”:“发布”,
“标题”:{
“内容类型”:“应用程序/json”
},
“body”:JSON.stringify({“stripeToken”:token.id})
});
服务器端:要获取的URL是Firebase云函数:

const functions=require('firebase-functions');
const cors=require('cors')({origin:true});
const stripe=require(“stripe”)(“私钥”);
exports.chargeStripe=functions.https.onRequest(异步(请求、响应)=>{
//领取代币
让token=request.body.stripeToken;
//制造费用
let charge=wait stripe.charges.create({
金额:99,
货币:欧元,
说明:'付款',
资料来源:token
});
//发送响应
费用?发送(响应,200,{消息:'Success'}):发送(响应,500,{消息:'Error!'});
});
问题是我得到的是
console.log(令牌)→ '未定义的“

更新1 Chrome(浏览器)似乎正在阻止获取功能(CORS策略)。如果我通过失眠测试终点,一切都正常

有人知道在这种情况下该怎么办

更新2 由于,我在函数中添加了CORS中间件:

exports.chargeStripe=functions.https.onRequest((请求,响应)=>{
//使用“CORS”express中间件启用CORS。
返回cors(请求、响应、异步()=>{
//读令牌
让token=request.body.stripeToken;
//收费用户
let charge=wait stripe.charges.create({
金额:99,
货币:欧元,
说明:'付款',
资料来源:token
});
//发送响应
响应。状态(200)。发送('Ok');
});
}); 
现在一切都好了

多亏了,我添加了
cors包

const cors=require('cors')({origin:true});
然后,我在函数中使用了CORS中间件。因此,最终的解决方案是:

const functions=require('firebase-functions');
const cors=require('cors')({origin:true});
const stripe=require(“stripe”)(“私钥”);
exports.chargeStripe=functions.https.onRequest((请求,响应)=>{
//使用“CORS”express中间件启用CORS。
返回cors(请求、响应、异步()=>{
//读令牌
让token=request.body.stripeToken;
//收费用户
let charge=wait stripe.charges.create({
金额:99,
货币:欧元,
说明:'付款',
资料来源:token
});
//发送响应
响应。状态(200)。发送('Ok');
});
}); 

我不确定您对cors的实现是否正确。飞行前请求不包含实际的post数据。看这个:好吧,我编辑了这个问题,因为它可能会导致混乱。看起来您仍然没有正确地实现cors。您所做的只是导入库。你也需要在函数中使用它。多谢你的耐心,道格·史蒂文森。再次更新我的问题…如果您有自己问题的解决方案,您应该将其添加为答案,以便在接受正确答案的情况下结束问题。