Firebase Cloud Functions警告:“箭头功能预期没有返回值一致返回”

时间:2018-06-25 20:01:26

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

由于某些原因,当我部署从未见过的云功能时,我会在终端上获得输出。

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /Users/xxxxx/Desktop/cloud_functions/cloud_functions_live/functions
> eslint .


/Users/xxxxx/Desktop/cloud_functions/cloud_functions_live/functions/index.js
  38:5  warning  Arrow function expected no return value  consistent-return

✖ 1 problem (0 errors, 1 warning)

index.js中的第38行也是返回return docRef.doc("/payments/${payment}").get()

我在这里输入更多信息仅仅是因为stackoverflow表示我的代码太多,并且不允许我添加更新。我希望这不会违反政策,因为其他人要求提供更多代码,而另一个人赞成这个问题,表明我已经用有限的细节让我的问题足够清楚了,其他人无法识别。

exports.stripeCharge = functions.firestore.document('/payments/{payment}').onCreate((snap, context) => {

    console.log("payment data", snap);

    const payment = snap.data();

    console.log("payment data2", payment.token);
        //console.log("payment data2", payment.token.idempotency_key);


    if (!payment || payment.charge) return;


    var docRef = admin.firestore()
    const idempotency_key = payment.idempotency_key;  // prevent duplicate charges

    //.document(`/payments/${payment}`);
    //var docRef = 

    return docRef.doc(`/payments/${payment}`).get()
            .then(snapshot => {
            console.log("augu", snapshot);
            return snapshot;
            })
            .then(customer => {
                 const amount = payment.amount;
                 const source = payment.token;
                 const currency = payment.currency;
                 const charge = {amount, currency, source};

                 console.log("brett", charge);
                 return stripe.charges.create(charge, { idempotency_key });

            })
            .then(charge => {
                console.log("set charge back");
                return docRef.doc(`/charges/${idempotency_key}`).set(charge);
            })

})

1 个答案:

答案 0 :(得分:3)

您的代码中的问题在以下行:

if (!payment || payment.charge) return;

由于您以后要返回承诺,因此您需要在此处返回一定数量的值。例如错误。

eslint规则期望如果您从函数返回某些内容,则它总是返回一个值。如果那不是您想要的,则可以修改规则以允许未定义并返回未定义。