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

Postman调用PATCH请求失败,Express.js编写的对应接口无响应求排查

问题排查与修复方案
  • 首先检查是否引入了文件操作模块fs,以及在路由注册前是否配置了JSON请求体解析中间件:
    你需要在代码的路由定义前添加以下配置,否则req.body无法解析,且调用fs方法会直接抛出未定义错误导致请求无响应:
    const fs = require('fs')
    const express = require('express')
    const app = express()
    // 必须添加这行解析JSON请求体
    app.use(express.json())
    
  • 修复fs.writeFile的错误处理逻辑,当前代码完全没有处理文件写入异常,一旦出现权限不足、文件路径不存在、磁盘满等错误,回调不会执行返回逻辑,直接导致请求挂起无响应。同时原代码写入文件时传入了未修改的旧tours数组,属于逻辑错误需要修正:
    写入逻辑修改为如下代码即可:
    fs.writeFile(`${__dirname}/dev-data/data/tours-simple.json`, 
    // 替换为修改后的更新数组,否则文件不会保存更新后的数据
    JSON.stringify(updatedTours), 
    err => {
        // 新增错误判断分支,出现写入错误时直接返回响应
        if(err) {
            return res.status(500).json({
                status: 'error',
                message: '数据更新失败'
            })
        }
        res.status(200).json({
            status: 'success',
            data : updatedTour
        });
    })
    
  • 检查路由匹配顺序,确认app.patch的路由定义没有被位置更靠前的同路径前缀路由拦截,比如前置的app.use('/api/v1/tours')中间件如果没有调用next(),也会导致请求无法到达PATCH路由逻辑,无返回响应。
  • 确认tours变量的初始化逻辑,如果你是通过异步fs.readFile读取的tours数据,必须等待读取完成后再注册PATCH路由,否则tours为undefined,执行find方法时会抛出未捕获异常,导致请求无响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:57:03