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

Expo React用Express对接Stripe出现Cannot GET /报错如何解决

报错截图

在Expo React项目中使用Express框架对接Stripe服务时,访问服务持续出现上图的Cannot GET /报错,初始编写代码如下:

import express from "express";

const app = express();
const port = 3000;
const PUBLISHABLE_KEY = "pk_test......";
const SECRET_KEY = "sk_test.........";


app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`);
});

报错原因

这个报错是Express的默认响应,当前代码仅启动了端口监听,没有定义任何路由处理规则,访问根路径/时找不到匹配的处理逻辑就会返回该错误,和Stripe对接逻辑本身没有关联。

修复方案

  • 先添加基础根路由验证服务可用性
    在app.listen调用前补充根路径的GET请求处理逻辑,重启服务后再访问http://localhost:3000就能得到正常响应:
    app.get('/', (req, res) => {
      res.send('Stripe后端服务运行正常')
    })
    
  • 补充Stripe对接的必要配置
    1. 先安装Stripe官方依赖:执行命令npm install stripe
    2. 在路由定义前添加JSON请求体解析中间件,否则无法读取前端传递的请求参数:app.use(express.json())
    3. 编写对应业务接口,所有涉及SECRET_KEY的逻辑必须放在服务端,示例支付意向接口代码如下:
    import Stripe from 'stripe'
    const stripe = new Stripe(SECRET_KEY, { apiVersion: '2023-10-16' })
    
    app.post('/create-payment-intent', async (req, res) => {
      try {
        const paymentIntent = await stripe.paymentIntents.create({
          amount: req.body.amount, // 金额单位为对应货币最小单位,如人民币单位为分
          currency: 'cny', // 按需替换为实际使用的货币代码
          automatic_payment_methods: { enabled: true }
        })
        res.json({ clientSecret: paymentIntent.client_secret })
      } catch (err) {
        res.status(400).json({ error: err.message })
      }
    })
    
  • 调试注意事项
    *SECRET_KEY为高敏感信息,绝对不能泄露到前端代码中,前端侧仅可使用PUBLISHABLE_KEY初始化Stripe客户端。如果使用Expo真机调试,不要用localhost访问本地服务,替换为电脑在局域网下的IPv4地址,同时确认3000端口未被防火墙拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:18:19