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

Angular13+Universal项目server.ts报Express无listen属性TS2339错误如何解决

问题解决方法

这个Property 'listen' does not exist on type 'Express'.ts(2339)错误是因为Typescript没有正确识别Express实例的类型,通常由类型依赖版本不匹配、TS配置缺失导致,按照以下步骤修改即可解决:

  • 第一步:安装适配TS4.4的类型依赖
    Angular13配套的TS4.4无法兼容高版本的express类型声明,若之前已经安装了高版本的相关类型包,先执行卸载:
    npm uninstall @types/express @types/node
    再安装匹配版本的依赖:
    npm install --save-dev @types/express@4.17.13 @types/node@16.11.7
  • 第二步:调整server.ts中app函数的返回类型
    将app函数原来的返回类型标注express.Express修改为express.Application,修改后的代码片段如下:
// 原代码:export function app(): express.Express {
export function app(): express.Application {
  const server = express();
  // 函数内其余原有代码保持不变
}
  • 第三步:校验服务端TS配置
    打开项目根目录下的tsconfig.server.json,确认compilerOptions配置项中的types数组包含node,参考配置如下:
{
  "compilerOptions": {
    "types": ["node"],
    // 其余原有配置无需修改
  }
}
  • 临时兜底方案
    如果以上修改后仍有报错,可直接对server实例做类型断言绕过TS校验,不会影响实际运行效果:
function run(): void {
  const port = process.env.PORT || 4000;
  const server = app();
  // 对server做类型断言
  (server as any).listen(port, () => {
    console.log(`Node Express server listening on http://localhost:${port}`);
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:03