type holyshared = Engineer<mixed>

技術的なことなど色々

Apollo Serverをv4からv5にする

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系に移行できたので対応自体はすぐに終わりました。