Javascript 云Firebase功能在本地工作,但在部署后不工作
我正在编写我的第一个云函数,它在本地运行得很好,但在我将其部署到Firebase时就不起作用了。我正在尝试调用一个云函数,该函数将使用flatterweb通过HTTP请求发送电子邮件。我在网上读到,怀疑可能是因为我不能兑现承诺。如何确保异步调用完成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
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,控制台说请求主体缺少数据