ApolloServer v5がリリースされたのでアップグレードして見ました。
expressのmiddlewareとしてして組み込んでいたのでそれの対応だけで済みました。
今回express用のmiddlewareは別のパッケージになったみたいなので別途インストールします。
expressもついでにv5にしたかったので、express v5用のパッケージをインストールします。
yarn add @apollo/server @as-integrations/express5 express
後はmiddlewareを指定しているところを新しいパッケージに置き換えます。
import { createServer } from "http"; import { expressMiddleware, type ExpressContextFunctionArgument } from "@as-integrations/express5"; const app = express(); const httpServer = createServer(app); const graphqlServer = ApolloServer({}); await graphqlServer.start(); app.use( "/graphql", cors({ origin: [ "http://localhost:3000", ], credentials: true, }), express.json(), expressMiddleware(graphqlServer, { context: async ( args: ExpressContextFunctionArgument, ): Promise<{}> => { return {} } }); ); app.listen(process.env.PORT || 3000);
これだけでバージョンアップ自体は完了でした。
パッケージの参照を変えるだけで、v5系に移行できたので対応自体はすぐに終わりました。