如何通过AWS Amplify函数获取Stripe的price价格数据?
Stripe与AWS Amplify集成后retrieve方法报错解决方案
你遇到的Cannot read property 'retrieve' of undefined错误本质是stripe.prices对象在Amplify运行环境中未被正确初始化,结合create类方法可正常运行、纯Node环境测试通过的前提,按以下优先级排查解决:
- 确认Stripe调用位置:所有带密钥的Stripe服务端接口必须在Amplify后端Lambda函数中调用,禁止在前端代码中引入服务端版Stripe Node SDK。Stripe前端客户端SDK仅支持支付相关的前端能力,默认不包含prices、customers等资源的读写方法,直接调用会出现模块undefined报错。
注意:请勿将Stripe密钥硬编码在前端或后端代码中,统一存入Amplify环境变量管理 - 核对后端函数SDK版本:确保Amplify后端函数
package.json中声明的stripe依赖版本与你本地测试的Node项目版本一致,推荐升级至v10+稳定版,在后端函数根目录执行npm install stripe@latest --save重装依赖后重新部署Amplify后端。 - 检查Stripe初始化配置:不要指定过旧的
apiVersion参数,使用Stripe默认绑定的API版本即可,正确初始化示例如下:
const Stripe = require('stripe'); const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
- 排查Lambda权限限制:如果你为Lambda配置了Stripe资源访问权限策略,确保已放开GET类请求权限。retrieve类方法对应Stripe API的GET请求,create类方法对应POST请求,仅开放POST权限会导致读操作相关模块无法正常挂载。
- 功能验证:修改完成后先在Amplify Lambda测试控制台直接调用
stripe.prices.retrieve方法,确认返回正常后再对接前端逻辑。
内容的提问来源于stack exchange,提问作者Parth Shah
相关产品推荐
相关产品推荐

