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

Node.js服务监听正常报events:498 访问时nodemon崩溃

问题修复方案

报错根因

node:events:498错误由*单请求重复调用res.end()*触发:Node.js的HTTP响应在调用res.end()后就会完成响应流程、关闭响应流,重复调用会直接抛出未捕获异常导致进程崩溃,nodemon检测到进程退出就会触发重启,该问题和依赖损坏、npm缓存异常无关,重装依赖的操作无法解决问题。

代码逻辑缺陷

现有代码的分支判断没有做互斥,也没有在响应结束后终止逻辑执行:

  • 访问根路径/时,命中第一个if分支执行res.end('Home Page')后,代码会继续向下执行到末尾的res.end('Error Page'),触发二次调用
  • 访问/about路径时,命中第二个if分支执行res.end('About Page')后,同样会继续执行末尾的res.end('Error Page'),触发二次调用

修复后代码

在每个响应分支的res.end()前加return终止函数执行,保证单次请求只会调用一次res.end()即可:

const http = require('http')

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    return res.end('Home Page')
  }
  if (req.url === '/about') {
    return res.end('About Page')
  }
  res.end('Error Page')
})

server.listen(5000, () => {
  console.log('Server listening on port : 5000...')
})

也可以改用else if做分支互斥实现相同效果,修改后任意路径的请求都不会再触发重复响应错误,nodemon也不会异常崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:45:37