Abd*_*suf 7 javascript firebase vue.js google-cloud-functions
firebase我正在尝试从我的应用程序调用的函数发送电子邮件vue。我的 firebase 函数如下所示:
const functions = require(\'firebase-functions\');\nconst admin = require("firebase-admin")\nconst nodemailer = require(\'nodemailer\');\n\nadmin.initializeApp()\n\n\n//google account credentials used to send email\nvar transporter = nodemailer.createTransport({\n host: \'smtp.gmail.com\',\n port: 465,\n secure: true,\n auth: {\n user: \'xxxxx@gmail.com\',\n pass: \'xxxxxxxxxx\'\n }\n});\n\n\nexports.sendMail = functions.https.onRequest((req, res) => {\n res.header("Access-Control-Allow-Origin", "*");\n res.header("Access-Control-Allow-Headers", "Content-Type");\n res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");\n const mailOptions = {\n from: `\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2@gmail.com`,\n to: req.body.email,\n subject: \'contact form message\',\n html: `<h1>Order Confirmation</h1>\n <p>\n <b>Email: </b>"hello<br>\n </p>`\n };\n\n\n return transporter.sendMail(mailOptions, (error, data) => {\n console.log("here")\n if (error) {\n return res.send({"data": error.toString()});\n }\n data = JSON.stringify(data)\n return res.send({"data": `Sent! ${data}`});\n });\n\n});\nRun Code Online (Sandbox Code Playgroud)\n\n我在这里删除了用户并传递值。它们在我的代码中具有正确的值。vue我用来调用该函数的方法如下所示:
sendEmail(){\n let sendMail = firebase.functions().httpsCallable(\'sendMail\');\n sendMail(\n {\n email: \'xx@xx.xx.xx\'\n }\n ).then(\n result => {\n console.log(result.data)\n }\n )\n }\nRun Code Online (Sandbox Code Playgroud)\n\n调用此函数时,我在控制台中收到以下错误:
\n\nUncaught (in promise) Error: Response is not valid JSON object.\nat new e (index.cjs.js:58)\nat t.<anonymous> (index.cjs.js:543)\nat u (tslib.es6.js:100)\nat Object.next (tslib.es6.js:81)\nat s (tslib.es6.js:71)\nRun Code Online (Sandbox Code Playgroud)\n\n任何帮助,将不胜感激。谢谢
\nCon*_*nel 15
以防万一这可以帮助任何人谷歌搜索这个问题,我得到了“响应不是有效的 JSON 对象”。错误,因为我没有在客户端中指定正确的区域,并且我的函数未托管在默认的美国区域中。我正在编写一个反应本机 firebase 应用程序,所以我必须更改:
const result = await firebase.app().functions().httpsCallable("nameGoesHere");
Run Code Online (Sandbox Code Playgroud)
到:
const result = await firebase.app().functions("europe-west1").httpsCallable("nameGoesHere");
Run Code Online (Sandbox Code Playgroud)
您必须返回一个有效的JSON结果,如下所示:
return res.status(200).json({});
这里JSON is {}但它可能是例如类似的东西{"status": "success}。
| 归档时间: |
|
| 查看次数: |
8927 次 |
| 最近记录: |