由于某些原因,当我部署从未见过的云功能时,我会在终端上获得输出。
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);
})
})
答案 0 :(得分:3)
您的代码中的问题在以下行:
if (!payment || payment.charge) return;
由于您以后要返回承诺,因此您需要在此处返回一定数量的值。例如错误。
eslint规则期望如果您从函数返回某些内容,则它总是返回一个值。如果那不是您想要的,则可以修改规则以允许未定义并返回未定义。