gpt4 book ai didi

node.js - 访问 body 值时 Google 函数中断

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:34 25 4
gpt4 key购买 nike

我想使用谷歌函数来处理一些发布数据并返回它。虽然它在本地运行良好,但我无法让它在 Google 服务器上运行。

这个“功能”:

exports.helloWorld = (req, res) => {
res.set('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS, POST');
res.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.set('Access-Control-Allow-Origin', '*');
//res.status(200).send({"req.body.message": req.body.message});
res.status(200).send({"req.body.message.length": req.body.message.length});
return;
};

此请求将失败:

fetch("https://us-central1-{myproject}.cloudfunctions.net/demo",
{
body: JSON.stringify({"message":"hello"}),
method: "POST",
headers: {
'Content-Type': 'application/json'
},
mode: "cors"
}
).then(response => response.json())
.then(d => console.log(d))

TypeError: Cannot read property 'length' of undefined
at exports.helloWorld (/user_code/index.js:17:76)
at ...

而与其他 res.status... 行注释相同的方法将起作用并返回 {req.body.message: "hello"}

在本地这是有效的..知道为什么这会破坏吗?

最佳答案

问题是,我没有检查 request.method。浏览器发出了预检 OPTIONS 请求,但这次失败了,因为那里没有 req.body.message。所以真正的 POST 请求从未发生过。

这解决了它:

  exports.helloWorld = (req, res) => {
if (req.method === 'POST') {
res.set('Access-Control-Allow-Origin', '*')
.set('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS, POST')
.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
.set('Access-Control-Allow-Credentials', false)
.status(200).send({"req.body.message.length": req.body.message.length });
}
else {
res.set('Access-Control-Allow-Origin', '*')
.set('Access-Control-Allow-Methods', 'GET, HEAD, OPTIONS, POST')
.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
.set('Access-Control-Allow-Credentials', false)
.status(200).send();
}
};

关于node.js - 访问 body 值时 Google 函数中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com