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

Express.js指定文件未返回求助:GET请求始终返回index.html

Express.js 路由未执行、默认返回index.html的原因及解决办法

问题本质

  • express.static的默认行为:当你用这个中间件托管静态目录时,访问根路径/,它会自动查找目录下的index.html作为默认首页返回,这是Express内置的规则。
  • 中间件执行顺序优先级:你把app.use(express.static(...))写在了app.get("/")前面,请求到达服务器时,会先经过静态文件中间件。它匹配到根路径后直接返回了index.html,后续的app.get("/")路由处理函数完全不会被触发,所以你注释的代码、console.log都没机会运行。

可行解决方案

根据你的需求选择对应方案:

  1. 修改静态中间件的默认首页
    如果希望根路径直接返回index2.html,给static中间件添加index配置:

    app.use(express.static(__dirname + "/public", { index: "index2.html" }));
    

    这样访问/时,静态中间件会优先返回index2.html。

  2. 调整路由与中间件的顺序
    如果你想保留静态中间件的默认行为,但根路径走自定义逻辑,把app.get("/")移到静态中间件前面:

    // 先定义根路由
    app.get("/", (req, res) => {
      console.log("Hello");
      res.sendFile(__dirname + "/public/index2.html");
    })
    // 再挂载静态文件中间件
    app.use(express.static(__dirname + "/public"));
    

    此时请求/会先执行自定义路由,不会触发静态中间件的默认首页机制。

  3. 禁用静态中间件的默认首页
    如果不需要静态中间件自动返回首页,可关闭该功能:

    app.use(express.static(__dirname + "/public", { index: false }));
    

    之后根路径请求会进入你的app.get("/")处理函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:33:20