这是我第一次尝试在 Firebase 中部署云功能,通常我使用 Direbase 模拟器,但在本例中,使用 Stripe,我遇到了 Cors 问题。当我运行命令: firebasedeploy--onlyfunctions
时,我没有编译错误,但它告诉我在发布过程中出现了错误。从 Firebase 控制台查看,我注意到日志中显示:
"@type":"type.googleapis.com/google.cloud.audit.AuditLog","status":{"code":3,"message":"Function failed on loading user code.
这是我的云函数,我不明白错误是什么:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const stripe = require("stripe")(functions.config().stripe.secret_key);
admin.initializeApp(functions.config().firebase);
export const createCheckoutSessionGreen = functions.region("europe-west6")
.https.onCall(
async (data: any, context: any) => {
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
mode: "payment",
success_url: "http://localhost:8100/tabs/types/song",
cancel_url: "http://localhost:8100/tabs/types/song",
line_items: [
{
price_data: {
currency: "eur",
product_data: {
name: data,
},
unit_amount: 1.99 * 100,
},
quantity: 1,
},
],
});
return session.id;
}
);
最佳答案
如果要使用 ES6
语法,则需要将 Typescript 与 Cloud Function 结合使用。看来您正在使用 Javascript,因此请尝试使用 exports
而不是 export const
重构代码。此外,您不需要将任何参数传递给 initializeApp()
,因为您正在部署到 Cloud Functions,然后它将使用 Application Default Credentials :
admin.initializeApp();
exports.createCheckoutSessionGreen = functions.region("europe-west6").https.onCall(...)
关于node.js - 部署云函数Firebase/Stripe时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72593927/