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

添加@types/cors后Express TypeScript的POST请求在Postman中持续挂起

POST请求挂起无响应的核心问题及修复方案

问题1:验证中间件未传递请求到下一个处理环节

你的validateIssueRequest中间件仅在请求体为空时返回错误,但当验证通过时,没有调用next()将请求流转到后续的createIssue控制器。这会导致请求一直处于挂起状态,因为Express不知道该继续处理这个请求。

修改后的issue.middlewares.ts:

import { Issue } from '../interfaces/issue.interface';
import { Request, Response, NextFunction } from 'express';

export function validateIssueRequest(req: Request, res: Response, next: NextFunction) {
    const issue = req.body as Issue;
    if(!issue) {
        return res.status(400).json({ message: 'fail'})
    }
    // 验证通过,传递请求到下一个处理函数
    next();
}

注意:给错误响应加上return,避免后续代码意外执行。

问题2:路由挂载在服务器启动之后

app.listen()会启动Express服务器,之后再挂载路由app.use('/issue', issueRoutes),这些路由不会被注册到已启动的服务器上,导致请求无法匹配到对应的路由处理逻辑。

修改后的index.ts(调整路由挂载位置):

import express from 'express';
const app = express();
const port = 3001;
import issueRoutes from './routes/issueRoute';
import cors from 'cors';

const allowedOrigins = ['http://localhost:5173'];
const options = {
    origin: allowedOrigins
};
app.use(cors(options)); // 修正多余的括号

app.use(express.json());
// 先挂载路由,再启动服务器
app.use('/issue', issueRoutes);

app.listen(port, () => {
    console.log(`Listening to port ${port}`)
});

问题3:CORS配置语法冗余

原代码中app.use(cors((options)));多了一层括号,虽然可能不触发错误,但不符合规范,修正为app.use(cors(options));即可。

完成以上修改后,重启服务器,Postman的POST请求应该能正常收到响应了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:15:57