【发布时间】:2019-07-17 09:28:00
【问题描述】:
我尝试将此功能部署到 Firebase
另外,我使用 Cloud Firestore 作为数据库
const stripe = require("stripe")("STRIPE_API_KEY");
exports.stripeCharge = functions.firestore
.document("/payments/{userId}/{paymentId}")
.onWrite(event => {
const payment = event.data.val();
const userId = event.params.userId;
const paymentId = event.params.paymentId;
// checks if payment exists or if it has already been charged
if (!payment || payment.charge) return;
return admin
.firestore()
.doc(`/users/${userId}`)
.once("value")
.then(snapshot => {
return snapshot.val();
})
.then(customer => {
const amount = payment.amount;
const idempotency_key = paymentId; // prevent duplicate charges
const source = payment.token.id;
const currency = "eur";
const charge = { amount, currency, source };
return stripe.charges.create(charge, { idempotency_key });
})
.then(charge => {
admin
.firestore()
.doc(`/payments/${userId}/${paymentId}/charge`)
.set(charge),
{ merge: true };
});
});
我按照本教程进行操作
当我运行firebase deploy --only functions
这出现在终端中
! functions: failed to create function stripeCharge
HTTP Error: 400, The request has errors
Functions deploy had errors with the following functions:
stripeCharge
To try redeploying those functions, run:
firebase deploy --only functions:stripeCharge
To continue deploying other features (such as database), run:
firebase deploy --except functions
Error: Functions did not deploy properly.
我在 Firebase 日志中收到此错误 Firebase Log error
有人知道可能是什么问题吗?
【问题讨论】:
-
您使用的是哪个版本的 Cloud Functions for Firebase。看来您使用的是旧语法,请参阅firebase.google.com/docs/functions/beta-v1-diff#cloud-firestore。您应该检查您的
package.json文件并确认此语法与您的版本一致。您能否将此package.json文件的内容添加到您的问题中。无论如何,迁移到最新的 CF 版本是个好主意。 -
{ "name": "functions", "description": "Cloud Functions for Firebase", "scripts": { "serve": "firebase serve --only functions", "shell": "firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "dependencies": { "@sendgrid/mail": "^6.3.1", "cors": "^2.8.5", "firebase-admin": "~7.0.0", "firebase-functions": "^2.2.0", "stripe": "^6.25.1" }, "private": true } -
感谢该文档的链接,您说得对,我一直在使用旧语法
标签: node.js firebase google-cloud-firestore google-cloud-functions stripe-payments