You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Native/Expo 42使用@stripe/stripe-react-native对接Stripe报模块找不到错误

问题根因

你混淆了两套完全独立的Stripe SDK,触发了报错同时存在安全风险:

  • 已安装的@stripe/stripe-react-native是面向React Native客户端的前端SDK,仅用于前端收集卡信息、生成支付凭证
  • 你代码中require('stripe')调用的是Stripe官方的Node.js服务端SDK,你并未在项目中安装该包,因此直接抛出模块找不到的错误。严禁将该服务端SDK放入React Native客户端代码中使用,会直接泄露你的Stripe密钥,造成资金被盗刷的严重安全隐患。
修复步骤
  • 第一步:删除代码中const stripe = require('stripe')('testKey')这一行无效代码
  • 第二步:安装适配Expo SDK 42的Stripe RN版本,Expo SDK 42无法兼容最新版@stripe/stripe-react-native,执行安装命令:
    expo install @stripe/stripe-react-native@0.2.3
  • 第三步:使用前端SDK内置方法创建支付方式,你已经引入了useStripe钩子,直接调用钩子返回的createPaymentMethod方法即可,无需自行实例化Stripe对象,参考代码:
// 仅可在React函数组件内使用
import { CardField, useStripe, StripeProvider } from '@stripe/stripe-react-native'

const PaymentComponent = () => {
  const { createPaymentMethod } = useStripe();

  const createPaymentMethodHandler = async () => {
    // 实际场景不要硬编码卡片信息,通过CardField组件收集用户输入的卡信息
    const { paymentMethod, error } = await createPaymentMethod({
      type: 'Card',
      card: {
        number: '4242424242424242',
        expMonth: 9,
        expYear: 2022,
        cvc: '314'
      }
    });
    
    if (error) {
      // 处理报错逻辑
      console.log('创建支付方式失败:', error);
      return;
    }
    // 将paymentMethod.id传给你的自有后端,由后端调用Stripe接口完成后续支付流程
    console.log('支付方式创建成功:', paymentMethod.id);
  }

  return <CardField />
}

重要提示:所有需要用到Stripe密钥的操作(比如创建支付意图、确认扣款、发起退款等)必须放在你的自有后端完成,前端仅负责生成不涉及敏感信息的支付凭证ID传给后端即可。

内容的提问来源于stack exchange,提问作者MK_Pierce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:27:03