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

TypeScript启动Apollo Server时出现Promise相关编译错误如何解决?

错误原因

该TS类型错误出现在等待Express服务启动的Promise逻辑中,本质是参数类型不匹配:

  • app.listen()的第二个入参是服务启动成功后的回调,要求为无入参的() => void类型
  • 你直接传入Promise默认的resolve方法,其签名为(value: unknown) => void,会接收一个参数,因此不符合类型要求。

修复方案

你只需要用无参匿名函数包裹resolve调用,同时给Promise加上void泛型明确无返回值即可,修改对应代码行:
原代码:

await new Promise(resolve => app.listen({ port: 4000 }, resolve));

修改后:

await new Promise<void>(resolve => app.listen({ port: 4000 }, () => resolve()));

如果你后续需要拿到启动后的http服务实例,也可以按如下方式处理:

import http from 'http';

// ...其他逻辑
const httpServer = await new Promise<http.Server>(resolve => {
  const server = app.listen({ port: 4000 }, () => resolve(server));
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:21:00