Skip to main content

Apollo 服务器 v3 升级到 Apollo 服务器 v4

🌐 Apollo Server v3 upgraded to Apollo Server v4

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

🌐 Strapi 5 has migrated to Apollo Server v4 and this might require some manual migration steps.

此页面是重大更改数据库的一部分,提供关于重大更改的信息以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

🌐 This page is part of the breaking changes database and provides information about the breaking change and additional instructions to migrate from Strapi v4 to Strapi 5.

 Is this breaking change affecting plugins?Yes
 Is this breaking change automatically handled by a codemod?No

重大变更描述

🌐 Breaking change description

在 Strapi v4 中

GraphQL 服务器的 Apollo Server v3 和 GraphQL 模块的 graphql ^15。

🌐 Apollo Server v3 for the GraphQL server and graphql ^15 for the GraphQL module.

在 Strapi 5 中

GraphQL 服务器的 Apollo Server v4 和 GraphQL 模块的 graphql ^16。

🌐 Apollo Server v4 for the GraphQL server and graphql ^16 for the GraphQL module.

迁移

🌐 Migration

本节重新组合了有关引入的重大更改的有用说明和程序。

🌐 This section regroups useful notes and procedures about the introduced breaking change.

注意

🌐 Notes

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

手动迁移

🌐 Manual migration

要迁移到 Strapi 5:

🌐 To migrate to Strapi 5:

  • 通过设置 x-apollo-operation-name 头或在 GraphQL 插件多部分消息(文件上传)配置中添加 csrfPrevention: false 来禁用新的保护。
  • ApolloError 替换为 GraphQLError
  • 移除根级配置选项如 formatResponse,并在 plugins 数组中用插件钩子替代它们。
  • 移除模块配置选项,并将其拆分为 typeDefsresolvers
  • debug 替换为 includeStacktraceInErrorResponses