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

Express单请求中Middleware被调用两次的问题排查与修复

解决Express中间件被调用两次的问题

问题原因

浏览器加载页面时会自动发起对/favicon.ico的请求(即使页面未显式引用),这会和你访问页面的根路径请求一起触发通用app.use()中间件,导致控制台两次打印日志。你可以在中间件里添加console.log(req.url)验证,会看到两次请求路径分别是/和/favicon.ico。

解决方案

方案1:直接拦截favicon请求

在通用中间件前添加专门处理/favicon.ico的路由,返回空响应(204状态码),避免触发通用中间件:

const express = require('express')
const app = express()

// 拦截favicon请求,返回无内容状态码
app.get('/favicon.ico', (req, res) => res.sendStatus(204))

app.use((req, res , next)=>{
    console.log("its middleware")
    res.send("<h1>Hello World</h1>")
})

app.listen(3000)

方案2:给通用中间件指定匹配路径

将通用中间件限制为仅处理根路径/的请求,这样其他路径(比如/favicon.ico)不会触发该中间件:

const express = require('express')
const app = express()

// 仅根路径请求触发此中间件
app.use('/', (req, res , next)=>{
    console.log("its middleware")
    res.send("<h1>Hello World</h1>")
})

app.listen(3000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:06:32