【问题标题】:firebase deployment error:"error occured while parsing your function triggers"firebase 部署错误:“解析函数触发器时发生错误”
【发布时间】:2018-07-03 11:49:42
【问题描述】:

我在部署函数时遇到错误,因为“解析函数触发器时发生错误”和 firestore.collection('orders').get() 行中的语法错误 syntax error: unexpected token '.'。我的节点版本是 v8.11.3。 我尝试了更新节点版本的命令: npm install -g firebase-tools@latest 但错误仍然保持不变。你能帮我解决这个问题吗? 这是我的代码。

const functions = require('firebase-functions');
var admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
var firestore = admin.firestore();

exports.webhook = functions.https.onRequest((request, response) => {

    console.log("request.body.result.parameters: ", request.body.result.parameters);
    switch(request.body.result.action)
    {
        case'bookhotel':
            let params = request.body.result.parameters;

            firestore.collection('orders').add(params)
            .then((docRef) => {

                console.log("docRef: ", docRef);
                response.send({
                    speech:
                        `${params["name"]} your hotel booking request for ${params["room-type"]} room is forwarded for ${params["persons"]} persons,
                     we will contact you on ${params["email"]} soon.`

                });
                return;
            })
            .catch((e => {
                console.log("error:", e);
                response.send({
                    speech: "something went wrong when writing on database"
                });
            }))
        break;
        case'showbooking':
            firestore.collection('orders').get()
            .then((querySnapshot))=>{
                var orders=[];
                querySnapshot.forEach((doc)=>{orders.push(doc.data()) });

                var speech=`you have ${orders["length"]} orders \n`;

                orders.forEach((eachOrder,index)=>{
                    speech=`number ${index+1} is ${eachOrder["room-type"]} room for
                         ${eachOrder["persons"]} persons, ordered by ${eachOrder["name"]},
                         contact email is ${eachOrder["email"]}`
                    })
                    response.send({
                        speech:speech
                    });
                })
                .catch((err)=>{
                    console.log('error getting documents',err);

                    response.send({
                        speech: "something went wrong when reading from database"
                    })
                })
        break;

        default:
            response.send({
                speech:"no action matched in webhook"
            })
    }
});

【问题讨论】:

    标签: javascript node.js firebase google-cloud-functions


    【解决方案1】:

    我将您的代码复制到 VS Code 中,但它给了我不同的错误。

    首先,您需要在 case 块周围使用花括号。而不是这个:

    switch (thing) {
        case 'option1':
            statement;
            statement;
            break:
    }
    

    应该是这样的:

    switch (thing) {
        case 'option1': {
            statement;
            statement;
            break:
        }
    }
    

    注意语句块周围的花括号。

    另外,这一行的括号太多了:

    .then((querySnapshot))=>{
    

    应该是:

    .then((querySnapshot)=>{
    

    之后,代码编译正常。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 2018-08-03
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2021-05-14
      • 2020-03-19
      相关资源
      最近更新 更多