Javascript 云Firebase功能在本地工作,但在部署后不工作

Javascript 云Firebase功能在本地工作,但在部署后不工作,javascript,firebase,flutter,google-cloud-functions,Javascript,Firebase,Flutter,Google Cloud Functions,我正在编写我的第一个云函数,它在本地运行得很好,但在我将其部署到Firebase时就不起作用了。我正在尝试调用一个云函数,该函数将使用flatterweb通过HTTP请求发送电子邮件。我在网上读到,怀疑可能是因为我不能兑现承诺。如何确保异步调用完成 const nodemailer = require('nodemailer'); const cors = require('cors')({origin: true}); /** * Here we're using Gmail to send

我正在编写我的第一个云函数,它在本地运行得很好,但在我将其部署到Firebase时就不起作用了。我正在尝试调用一个云函数,该函数将使用flatterweb通过HTTP请求发送电子邮件。我在网上读到,怀疑可能是因为我不能兑现承诺。如何确保异步调用完成

const nodemailer = require('nodemailer');
const cors = require('cors')({origin: true});

/**
* Here we're using Gmail to send
*/
let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'dummyaccount@gmail.com',
        pass: 'dummypassword'
    }
});

exports.sendMail = functions.https.onRequest((req, res) => {
    cors(req, res, () => {

        return transporter.sendMail(req.body, (erro, info) => {
            if(erro){
                return res.send(erro.toString());
            }
            return res.send('Message send');
        });
    });
});


const admin = require('firebase-admin');
admin.initializeApp();



This is my Http Request using Dart for Flutter Web
void httpCallFunction() async {
    var url =
        'https://us-central1-fire-station-ope-blablala.cloudfunctions.net/sendMail';
    var response = await http.post(
      url,
      body: json.encode({
        "from": "Dummy Guy <Do-Not-Reply@gmail.com>",
        "to": "$_email",
        "subject": "Your Booking has been approved!!",
        "html": approvedMessageTosent,
      }),
      headers: {
        'Content-type': 'application/json',
      },
    );
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  }
const nodemailer=require('nodemailer');
const cors=require('cors')({origin:true});
/**
*我们用Gmail发送邮件
*/
让transporter=nodeEmailer.createTransport({
服务:“gmail”,
认证:{
用户:'dummyaccount@gmail.com',
密码:“dummypassword”
}
});
exports.sendMail=functions.https.onRequest((req,res)=>{
cors(请求、回复等){
返回transporter.sendMail(请求正文,(错误,信息)=>{
如果(错误){
返回res.send(erro.toString());
}
返回res.send(“消息发送”);
});
});
});
const admin=require('firebase-admin');
admin.initializeApp();
这是我使用Dart for Flatter Web的Http请求
void httpCallFunction()异步{
变量url=
'https://us-central1-fire-station-ope-blablala.cloudfunctions.net/sendMail';
var response=wait http.post(
网址,
正文:json.encode({
“来自”:“哑巴”,
“收件人”:“$\u电子邮件”,
“主题”:“您的预订已被批准!!”,
“html”:approvedMessageTosent,
}),
标题:{
“内容类型”:“应用程序/json”,
},
);
打印('Response status:${Response.statusCode}');
打印('Response body:${Response.body}');
}

我通过过山车解决了这个问题。很明显,云功能日志返回状态代码204,并说我的“请求主体缺少数据”,但我可以看到我的数据正在发送

所以我发现另一个人面临着与我在这个链接中完全相同的问题:

基本上,我必须将数据封装在一个名为“data”的键中

{
   "data":{ 
      "to":"john@doe.com",
      "displayName":"Johnny",
      "from":"JaneDoe",
   }
}

您是否在云功能日志中发现任何错误?另外,这些
console.log
在您的颤振功能输出中是什么?我遇到了状态代码204,控制台说请求主体缺少数据