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

使用TypeScript搭建GraphQL Lambda服务器遇类型兼容错误求助

修复Apollo Server Lambda与TypeScript、GraphQL的类型冲突错误

问题场景

使用typescript@4.9.4、graphql@15.8.0、apollo-server-lambda@2.19.0搭建GraphQL Lambda服务器时,触发如下类型错误:

node_modules/apollo-link/lib/types.d.ts(5,18): error TS2430: Interface 'ExecutionResult<TData>' incorrectly extends interface 'ExecutionResult<{ [key: string]: any; }, { [key: string]: any; }>'
Types of property 'data' are incompatible.
  Type 'TData | null | undefined' is not assignable to type '{ [key: string]: any; } | null | undefined'.
    Type 'TData' is not assignable to type '{ [key: string]: any; } | null | undefined'.
      Type 'TData' is not assignable to type '{ [key: string]: any; }'.

已尝试方案

切换GraphQL版本至^14.0.0、^16.0.0,问题未得到解决。

当前依赖片段(package.json)

"@aws-sdk/client-kms": "^3.16.0",
"apollo-server-lambda": "2.19.0",
"aws-embedded-metrics": "^2.0.4",
"axios": "^0.24.0",
"axios-retry": "^3.2.5",
"graphql": "^15.5.0",

修复建议

  • 锁定兼容的GraphQL版本:apollo-server-lambda@2.19.0官方兼容GraphQL ^15.3.0,TypeScript@4.9+对泛型约束更严格,直接锁定graphql@15.3.0,避免版本自动升级到15.8.0带来的类型定义差异。执行命令:
    npm install graphql@15.3.0 --save-exact
    
  • 临时跳过第三方库类型检查:在tsconfig.json中添加"skipLibCheck": true,跳过node_modules中库的类型检查,不影响业务代码的类型校验,快速规避冲突。
  • 升级Apollo Server至3.x版本:apollo-server-lambda@2.x版本较老旧,3.x版本对TypeScript 4.x兼容性更好,适配GraphQL 15/16版本更完善。可升级至apollo-server-lambda@3.12.0,注意升级后需要调整初始化代码(如ApolloServer构造参数、Lambda handler写法)。
  • 显式指定apollo-link版本:错误源自apollo-link的类型定义,项目可能隐式安装了不兼容版本,显式安装与apollo-server-lambda@2.19.0匹配的apollo-link@1.2.14,解决版本不一致导致的类型冲突:
    npm install apollo-link@1.2.14 --save
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:50:26