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
相关产品推荐
相关产品推荐

