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

Express条件判断无响应求助:接口请求一直处于处理状态

问题分析与修复

你的代码存在两个关键问题,导致请求一直处于挂起状态:

  1. 参数类型不匹配
    req.params.id 从URL中获取到的是字符串类型,而你用严格相等运算符===和数字1做比较,两者类型不同,这个条件永远不会成立,所以res.json(id)永远不会执行。

  2. 未处理所有请求分支
    当请求的id不满足你的条件时,你没有向客户端返回任何响应,Express会一直保持这个请求的连接,直到超时,这就是你看到的"请求一直处于处理状态"的原因。

修复后的代码

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

app.get("/api/products/:id", function (req, res) {
  const id = req.params.id;

  // 要么把数字转为字符串比较,要么把参数转为数字比较
  if (id === "1") {
    res.json(id);
  } else {
    // 处理其他情况,返回合适的响应,比如404或者提示信息
    res.status(404).json({ message: "产品不存在" });
  }
});

// 别忘了启动服务器
app.listen(3000, () => {
  console.log("服务器运行在3000端口");
});

额外提示

  • 如果你需要处理数字类型的id,可以把req.params.id转为数字:const id = Number(req.params.id);,之后再和数字1用===比较就没问题了。
  • 任何Express的请求处理函数都必须调用res对象的响应方法(比如res.json()、res.send()、res.status().end()等),否则请求会一直挂起。

内容的提问来源于stack exchange,提问作者Juan Camilo Orjuela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:31:03