Node集成Stripe报错Cannot read property 'sessions' of undefined如何解决
问题排查与解决步骤
1. 检查服务端Stripe模块导入逻辑
这是最高概率的错误原因:
- 首先确认你已正确安装官方Stripe Node SDK,执行安装命令:
npm install stripe --save - 确认服务端代码存在正确的Stripe构造函数引入,CommonJS规范写法为
const Stripe = require('stripe'),ES模块规范写法为import Stripe from 'stripe',如果缺少这行导入,直接调用Stripe(stripeKey)生成的实例会缺少所有内置属性。
2. 确认Stripe SDK版本符合要求
checkout.sessions是Stripe SDK v8及以上版本才稳定支持的接口,旧版本SDK不存在该属性:
- 执行命令
npm list stripe查看当前项目安装的SDK版本 - 如果版本低于v8,执行
npm install stripe@latest --save升级到最新正式版即可。
3. 修正前端axios调用逻辑
你当前的axios代码混杂了fetch的语法规则,会导致后端无法正常接收priceId参数,修正后代码如下:
const createCheckoutSession = (priceId:any) => { return axios.post("/create-checkout-session", { priceId: priceId }).then(function(result) { return result.data; // axios返回数据直接取result.data,不需要括号调用 }); }; const handleClick = async (event:any) => { const stripe = await stripePromise; createCheckoutSession('price_1J7UmZFYFs5GcbAXvPronXSX').then(function(data) { stripe .redirectToCheckout({ sessionId: data.sessionId }) .then(()=>{console.log('handleResult')}); }) };
4. 验证依赖缓存问题
如果上述操作后还是不存在checkout属性,可以删除项目根目录的node_modules文件夹、package-lock.json(或yarn.lock)文件,重新执行npm install安装所有依赖,排除依赖缓存导致的实例异常。
内容的提问来源于stack exchange,提问作者Luis Fernando Manzano
相关产品推荐
相关产品推荐

