![](/img/trans.png)
[英]TypeError: Cannot read properties of undefined (reading 'send') | Discord JS v14
[英]Failed to generate manifest from function source: TypeError: Cannot read properties of undefined (reading 'secret') react js node js
我尝试替换:
const stripe =const stripe=require("stripe")('sk_test_51KMbN...');
至
const stripe = require("stripe")(functions.config().stripe.secret);
但是当我运行 firebase 模拟器时,我遇到了一个错误:
错误:无法从源加载 function 定义:无法从 function 源生成清单:TypeError:无法读取未定义的属性(读取“秘密”)
我已经将其设置如下:
firebase functions:config:set stripe.secret=< SECRET KEY>
我可以通过运行看到它:
firebase functions:config:get
我在 functions/index.js 中的代码是
const functions = require("firebase-functions");
const express=require("express");
const cors=require("cors");
require('dotenv').config({ path: './.env' });
//API
const stripe = require("stripe")(functions.config().stripe.secret);
//App config
const app=express();
var admin = require("firebase-admin");
var serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
//middlewares
app.use(cors({origin: true}));
app.use(express.json());
async function createCheckoutSession(req, res) {
const domainUrl = process.env.WEB_APP_URL;
const { line_items, customer_email } = req.body;
if (!line_items || !customer_email) {
return res.status(400).json({ error: 'missing required session parameters' });
}
let session;
try {
session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
mode: 'payment',
line_items,
customer_email,
success_url: `${domainUrl}/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${domainUrl}/canceled`,
shipping_address_collection: { allowed_countries: ['GB', 'US'] }
});
res.status(200).json({ sessionId: session.id, });
} catch (error) {
console.log(error);
res.status(400).json({ error: 'an error occured, unable to create session'});
}}
app.get('/',(req, res)=>res.send('Hello World!'));
app.post('/create-checkout-session', createCheckoutSession);
exports.api=functions.https.onRequest(app);
当我定义时,代码没有问题:
const stripe =const stripe=require("stripe")('sk_test_51KMbNcJ....');
我不知道为什么它无法读取未定义的“functions.config().stripe.secret”的属性
如果像我一样,您在尝试在本地运行函数时遇到此错误,那是因为 functions.config() 仅在 Cloud Functions 运行时中可用。
如果您在部署之前尝试测试您的功能,这里是有关如何执行此操作的文档的链接:在本地运行功能。 具体来说,这部分很有趣:
如果您使用自定义函数配置变量,请在运行 firebase serve 之前在项目的函数目录中运行以下命令。
firebase functions:config:get > .runtimeconfig.json
但是,如果您使用的是 Windows PowerShell,请将上述命令替换为:
firebase functions:config:get | ac .runtimeconfig.json
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.