Javascript 具有firebase云功能的Axios post

Javascript 具有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,

我有一个基本的firebase云函数。我想用Axios发布一个请求(发送Slack消息)。但是服务器返回“错误:无法处理请求(500)”。问题在哪里?我使用cors

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服务除外)。