Предупреждение Firebase Cloud Functions: «Функция стрелки не ожидала возвращаемого значения непротиворечивый возврат» - PullRequest
0 голосов
/ 25 июня 2018

По какой-то причине я получаю вывод на свой терминал, когда я внедряю облачные функции, которые я никогда не видел.

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)

Также строка 38 в index.js - это возвращение 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 голосов
/ 13 ноября 2018

Проблема в вашем коде заключается в следующей строке:

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

Поскольку позже вы возвращаете обещание, вам необходимо вернуть значение здесь.например, ложь.

Правило eslint ожидает, что если вы возвращаете что-то из функции, оно всегда возвращает значение.Если это не то, что вы хотите, вы можете изменить правила, чтобы разрешить неопределенное и вернуть неопределенное.

...