Apollo Server v3 升级到 Apollo Server v4

页面摘要: Strapi 5 将 Apollo Server 从 v3 升级到 v4,并将 GraphQL 从 v15 升级到 v16,需要对错误处理、CSRF 防护和插件配置进行迁移更新。

Strapi 5 已迁移到 Apollo Server v4,这可能需要一些手动迁移步骤。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

破坏性变更说明

在 Strapi v4 中

GraphQL 服务器使用 Apollo Server v3,GraphQL 模块使用 graphql ^15。

在 Strapi 5 中

GraphQL 服务器使用 Apollo Server v4,GraphQL 模块使用 graphql ^16。

迁移

本节汇总了关于该破坏性变更的有用说明和操作步骤。

说明

  • 由于 Apollo 在 v4 中引入的破坏性变更,Strapi 在 Apollo Server 配置中自动设置 status400ForVariableCoercionErrors: true。此行为在 Apollo v5 中将再次成为默认。
  • Strapi 5 将 graphql 包从 15 升级到 16,任何项目中只能包含一个版本。因此,依赖 graphql:15 的用户代码或插件需要使用与 Strapi 相同的版本范围。
  • 有关升级到 Apollo Server v4 的指引,请参阅下方的手动迁移部分。更详细的信息,请参阅 Apollo v4 迁移 文档。

手动迁移

要迁移到 Strapi 5:

  • 设置 x-apollo-operation-name 请求头,或通过向 GraphQL 插件配置添加 csrfPrevention: false 来禁用针对分段消息(文件上传)的新防护。
  • 用 GraphQLError 替换 ApolloError。
  • 移除根级别的配置选项(如 formatResponse),并将其替换为 plugins 数组中的插件钩子。
  • 移除 modules 配置选项,并将其拆分为 typeDefs 和 resolvers。
  • 用 includeStacktraceInErrorResponses 替换 debug。