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

PATCH请求始终处于Pending状态,后端无法获取请求体求助

问题解决方案

1. 修复 req.body 为 undefined 的问题

Express 不会自动解析 JSON 格式的请求体,必须在路由定义前添加 express.json() 中间件:

const express = require('express');
const app = express();

// 解析JSON请求体,必须放在路由之前
app.use(express.json());

app.patch('/api/data', (req, res) => {
  console.log(req.body); // 现在能正确打印请求体内容
  // 发送响应结束请求
  res.status(200).json({ success: true });
});

2. 解决请求一直处于 pending 的问题

你的后端 PATCH 接口没有调用响应方法(如 res.json()、res.send())结束请求,导致前端请求长期挂起。必须在处理完逻辑后发送响应,示例见上面代码中的 res.status(200).json(...)。

3. 正确处理 CORS 预请求

浏览器发送的 OPTIONS 预请求是跨域请求的正常流程,推荐使用 cors 中间件自动处理:

const cors = require('cors');
// 启用CORS,放在路由之前
app.use(cors());

如果不想依赖第三方包,也可以手动处理 OPTIONS 请求:

app.options('/api/data', (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'PATCH, OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  res.sendStatus(200);
});

4. 补全前端代码语法

你的前端 fetch 代码存在语法缺失(缺少闭合括号和大括号),补全后确保正常执行:

fetch('http://localhost:5001/api/data', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "formulaString": formula,
    "index": props.id
  })
})
.then(response => response.json())
.catch(err => console.error('请求失败:', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:54:23