🕸️
GraphQL Yoga v2 から v4にアップグレードするときのとある注意点
graphql-yoga v2からv4へのアップグレードのポイント
graphql-yogaをv2からv4にアップグレードする際のとある注意点を共有します。全体のマイグレーション手順については公式のmigrationガイドを参照してください。
endpoint
と graphiql.endpoint
オプションの削除
1. v4での大きな変更の1つに、endpoint
と graphiql.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);
この変更は少し分かりづらく、トラブルの原因となり得るので注意が必要です。
少しトリッキーな仕様変更なので、アップグレードの際のトラブル回避の参考になれば幸いです。
Discussion