我有一个使用firebase的项目。在functions/index.js
中,我在顶部附近有下面的导入代码。这将使用我的firebase配置中的生产api密钥初始化stripe api实例。
const stripeProd = require('stripe')(functions.config().stripe.secret)
在我的测试文件中,我使用Sinon进行存根和嘲讽。
在functions/index.js
的最底部,我导出我的express应用程序和上面显示的stripe api的实例:
exports.app = functions.runWith(runtimeOptions).https.onRequest(app)
// export these so they can be stubbed in UTs
exports.stripeProd = stripeProd
//.... other exports
这个导出让我成功地截取条纹,这样我的UT就不会进行API调用。
然而,当我尝试用firebase serve
启动时,我会得到以下错误:
❮❮❮ firebase serve
// ... stuff
i hosting: Serving hosting files from: public
✔ hosting: Local server: http://localhost:5000
⚠ functions: Maximum call stack size exceeded
⚠ Your function was killed because it raised an unhandled error.
我发现,如果我注释掉导出stripeapi的行,这个错误就会消失。为什么会发生这种情况?
试试这个:
const Stripe = require('stripe');
const stripeProd = new Stripe(functions.config().stripe.key, {
apiVersion: '2020-08-27' //this value should be whatever api version you are using
});
//...
exports.stripeProd = stripeProd
我希望它能有所帮助,我还建议从其他文件导入您的条纹函数,以便更有条理地工作。