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。