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

如何在搭配TypeScript与Webpack的Express服务中获取POST请求体

问题原因排查

核心原因

你的tsconfig.json配置中include字段仅覆盖了src和test目录下的.ts文件,若入口index.ts放在项目根目录,会被ts-loader直接跳过编译,你写的app.use(express.json())、app.use(express.urlencoded())请求体解析中间件实际上没有被打包到最终的运行代码中,服务运行时没有对应的解析逻辑,所以req.body返回空对象。

次要排查点

如果Postman发请求时Content-Type头和中间件不匹配,也会导致解析失败:

  • 发送JSON格式请求时没有设置Content-Type: application/json,express.json()会跳过解析
  • 发送表单格式请求时用了form-data类型,你没有挂载对应解析的multer类中间件
解决方案
  1. 修正tsconfig配置
    将根目录的index.ts加入include匹配范围,修改后tsconfig.json如下:
{
  "compilerOptions": {
    "outDir": "output",
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es6",
    "allowJs": true,
    "moduleResolution": "node"
  },
  "include": ["index.ts", "src/**/*.ts", "test/**/*.ts"],
  "exclude": ["node_modules"]
}

如果你的index.ts实际存放在src目录下,还需要同步修改webpack-config.js的entry配置:

entry: "./src/index.ts",
  1. 校验请求格式
    Postman发送JSON请求时,选择raw格式,子类别选择JSON,确认请求头自动携带Content-Type: application/json即可。

  2. 重启服务验证
    修改配置后终止当前webpack监听和运行的node服务,重新打包启动即可正常解析请求体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:36:02