Javascript 火基功能返回“;响应不是有效的JSON对象。”;

Javascript 火基功能返回“;响应不是有效的JSON对象。”;,javascript,firebase,vue.js,google-cloud-functions,Javascript,Firebase,Vue.js,Google Cloud Functions,我正在尝试从我的vue应用程序调用的firebase功能发送电子邮件。我的firebase函数如下所示: const functions = require('firebase-functions'); const admin = require("firebase-admin") const nodemailer = require('nodemailer'); admin.initializeApp() //google account credentials used to send

我正在尝试从我的
vue
应用程序调用的
firebase
功能发送电子邮件。我的firebase函数如下所示:

const functions = require('firebase-functions');
const admin = require("firebase-admin")
const nodemailer = require('nodemailer');

admin.initializeApp()


//google account credentials used to send email
var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true,
    auth: {
        user: 'xxxxx@gmail.com',
        pass: 'xxxxxxxxxx'
    }
});


exports.sendMail = functions.https.onRequest((req, res) => {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Content-Type");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    const mailOptions = {
        from: `•••••••••@gmail.com`,
        to: req.body.email,
        subject: 'contact form message',
        html: `<h1>Order Confirmation</h1>
                            <p>
                               <b>Email: </b>"hello<br>
                            </p>`
    };


    return transporter.sendMail(mailOptions, (error, data) => {
        console.log("here")
        if (error) {
            return res.send({"data": error.toString()});
        }
        data = JSON.stringify(data)
        return res.send({"data": `Sent! ${data}`});
    });

});
sendEmail(){
        let sendMail = firebase.functions().httpsCallable('sendMail');
        sendMail(
            {
                email: 'xx@xx.xx.xx'
            }
        ).then(
            result => {
                console.log(result.data)
            }
        )
    }
调用此函数时,控制台中出现以下错误:

Uncaught (in promise) Error: Response is not valid JSON object.
at new e (index.cjs.js:58)
at t.<anonymous> (index.cjs.js:543)
at u (tslib.es6.js:100)
at Object.next (tslib.es6.js:81)
at s (tslib.es6.js:71)
Uncaught(in promise)错误:响应不是有效的JSON对象。
在新的e(index.cjs.js:58)
在t。(索引:cjs.js:543)
at u(tslib.es6.js:100)
在Object.next(tslib.es6.js:81)
在s(tslib.es6.js:71)

任何帮助都将不胜感激。谢谢

您必须返回有效的
JSON
结果,如下所示:

返回res.status(200).json({})


这里的
JSON是
{}
,但它可以是类似于
{“status”:“success}

我无法从代码中判断情况是否如此,但当我在一个文件中导出函数,然后忘记将其包含在索引文件中时,这种情况总是发生在我身上。

问题可能在于处理程序。您使用的是
函数().httpscalable('your_name'))
但是函数的句柄是
onRequest
。根据文档,应该有
onCall
函数处理程序

比如:
exports.sendMail=functions.https.onCall((数据)=>{your_code_here});


Docs-

我将错误和成功都更改为
return res.status(200).json({});
并且我得到了`error:Response缺少数据字段。因此错误仍然来自于对响应的解释。它清楚地表明它正在等待响应中的字段数据,类似于return res.status(200).json({data:“mydata”});