Javascript 具有firebase云功能的Axios post
我有一个基本的firebase云函数。我想用Axios发布一个请求(发送Slack消息)。但是服务器返回“错误:无法处理请求(500)”。问题在哪里?我使用corsJavascript 具有firebase云功能的Axios post,javascript,node.js,axios,google-cloud-functions,Javascript,Node.js,Axios,Google Cloud Functions,我有一个基本的firebase云函数。我想用Axios发布一个请求(发送Slack消息)。但是服务器返回“错误:无法处理请求(500)”。问题在哪里?我使用cors const cors = require('cors') const functions = require('firebase-functions') const Axios = require('axios') exports.sendMessage = functions.https.onRequest((request,
const cors = require('cors')
const functions = require('firebase-functions')
const Axios = require('axios')
exports.sendMessage = functions.https.onRequest((request, response) => {
return cors()(request, response, () => {
return Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,
{
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'hello',
},
},
],
}
)
})
})
似乎您使用的
cors
不正确。此外,还应使用提供的响应
返回任何值。查看下面的详细信息
const cors=require('cors')({origin:true});
exports.sendMessage=functions.https.onRequest((请求,响应)=>{
返回cors(请求、响应、异步()=>{
试一试{
const res=等待Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXX*`,
{
区块:[
{
键入:“节”,
正文:{
类型:“mrkdwn”,
文字:“你好”,
},
},
],
},
);
response.status(res.status).json(res.data);
}捕获(错误){
response.status(400.json)(错误);
}
});
});
您似乎没有正确使用cors
。此外,还应使用提供的响应
返回任何值。查看下面的详细信息
const cors=require('cors')({origin:true});
exports.sendMessage=functions.https.onRequest((请求,响应)=>{
返回cors(请求、响应、异步()=>{
试一试{
const res=等待Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXX*`,
{
区块:[
{
键入:“节”,
正文:{
类型:“mrkdwn”,
文字:“你好”,
},
},
],
},
);
response.status(res.status).json(res.data);
}捕获(错误){
response.status(400.json)(错误);
}
});
});
实现这一点的方法是在帖子中添加标题“内容类型”:“application/x-www-form-urlencoded”。您可以使用提供的代码执行以下操作:
const cors=require('cors'))
const functions=require('firebase-functions')
常量Axios=require('Axios')
exports.sendMessage=functions.https.onRequest((请求,响应)=>{
返回cors()(请求,响应,()=>{
返回Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXX*`,
{
区块:[
{
键入:“节”,
正文:{
类型:“mrkdwn”,
文字:“你好”,
},
},
],
},
{
标题:{
“内容类型”:“应用程序/x-www-form-urlencoded”,
},
}
)
})
})
Slack API似乎不能很好地处理常规JSON,这是Axios的默认设置,因此需要对其进行更改
希望这能帮你解决问题 实现这一点的方法是在帖子中添加标题“Content Type”:“application/x-www-form-urlencoded”。您可以使用提供的代码执行以下操作:
const cors=require('cors'))
const functions=require('firebase-functions')
常量Axios=require('Axios')
exports.sendMessage=functions.https.onRequest((请求,响应)=>{
返回cors()(请求,响应,()=>{
返回Axios.post(
`https://hooks.slack.com/services/*XXXXXXXXXXXX*`,
{
区块:[
{
键入:“节”,
正文:{
类型:“mrkdwn”,
文字:“你好”,
},
},
],
},
{
标题:{
“内容类型”:“应用程序/x-www-form-urlencoded”,
},
}
)
})
})
Slack API似乎不能很好地处理常规JSON,这是Axios的默认设置,因此需要对其进行更改
希望这能帮你解决问题 我使用Firebase免费计划,但我使用节点8作为依赖项,它将在明年之前与此免费计划一起使用。请编辑问题以显示您在功能控制台中看到的任何错误。如果没有这些,我们必须猜测这里发生了什么。我使用Firebase免费计划,但我使用节点8作为依赖项,它将在明年之前使用此免费计划。请编辑问题以显示您在函数控制台中看到的任何错误。如果没有这些,我们必须猜测这里发生了什么。正常情况下它会工作,但现在我又遇到了一个错误getaddrinfo EAI_hooks.slack.com:443,可能是因为谷歌不允许你进行出站网络(谷歌服务除外)当你使用他们的Spark计划时。正常情况下它会工作,但现在我又遇到了一个错误getaddrinfo EAI_hooks.slack.com:443,可能是因为当你使用他们的Spark计划时,Google不允许你进行出站联网(Google服务除外)。