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

TypeScript编译报错No overload matches this call,express.listen调用异常

问题根源

express.Application.listen() 方法的回调函数按照类型定义不接收任何参数,这是触发类型报错的核心原因。
你传入的回调声明了err参数,和@types/express给出的listen重载签名不匹配,因此抛出ts(2769)错误。你后续新增req、res参数的修改也不符合类型定义:listen是服务启动方法,回调不会传入请求、响应对象,这两个参数仅属于路由处理函数的入参。
express的listen本质是对Node.js原生http.createServer().listen()的封装,原生listen的回调仅会在服务启动成功后触发,启动错误不会传入该回调,而是通过error事件抛出,所以类型定义才是() => void。

解决方式

方案1:保留错误处理逻辑

删除回调的err参数,单独监听error事件处理启动错误:

this.app.listen(port, () => {
  // 仅服务启动成功后执行
  console.log(`Server is listening on port ${port}`);
}).on('error', (err: Error) => {
  // 服务启动异常在这里处理
  console.log("err", err)
});

方案2:不需要处理启动错误的极简写法

this.app.listen(port, () => {
  console.log(`Server is listening on port ${port}`);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:08