🕸️

GraphQL Yoga v2 から v4にアップグレードするときのとある注意点

2023/09/13に公開

graphql-yoga v2からv4へのアップグレードのポイント

graphql-yogaをv2からv4にアップグレードする際のとある注意点を共有します。全体のマイグレーション手順については公式のmigrationガイドを参照してください。

1. endpointgraphiql.endpoint オプションの削除

v4での大きな変更の1つに、endpointgraphiql.endpoint オプションが削除された点が挙げられます。これにより、特に express を併用している場合に影響が出るケースがあります。

2. 以前の設定方法との変更点

v2での設定方法:

const graphQLServer = createServer({
  //... 以前の設定内容
})

v4での新しい設定方法:

const graphQLServer = createYoga({
  schema: createSchema({
    //... 新しい設定内容
  }),
});

3. エンドポイントの変更について

v4で、デフォルトのエンドポイントが /graphql として設定されています。それ以外のエンドポイントに設定したい場合は、明示的に graphqlEndpoint オプションを使用して指定する必要があります。

v2では、以下のように /graphql-other のエンドポイントも問題なく動作していました:

//... 
app.use('/graphql-other', graphQLOtherServer);

しかし、v4で同じ設定を行うと、NOT FOUNDエラーが発生します。

対応策:

const graphQLOtherServer = createYoga({
  graphqlEndpoint: '/graphql-other', // エンドポイントを明示的に設定
  //... その他の設定
});

app.use('/graphql-other', graphQLOtherServer);

この変更は少し分かりづらく、トラブルの原因となり得るので注意が必要です。

https://github.com/kenfdev/graphql-yoga-v2-to-v4/pull/2/files


少しトリッキーな仕様変更なので、アップグレードの際のトラブル回避の参考になれば幸いです。

Discussion