バックエンド モードをNODE_ENV: development
all に設定すると問題なく動作しますが、プロダクション モードでは graphql-codegen がエラーで失敗します。
ローカル Web サーバー エラー:
GraphQL イントロスペクションは Apollo サーバーでは許可されていませんが、クエリに _schema または _type が含まれていました。イントロスペクションを有効にするには、本番環境で introspection: true を ApolloServer に渡します。
本番 Web サーバー エラー:
https://example.com/graphqlからスキーマを読み込めませんでした。理由: 最初の証明書を検証できません。GraphQL コード ジェネレーターは以下をサポートしています。
- ES モジュールと CommonJS エクスポート (デフォルトまたは名前付きエクスポート「スキーマ」としてエクスポート)
- イントロスペクション JSON ファイル
- GraphQL エンドポイントの URL
- タイプ定義 (グロブ式) を持つ複数のファイル
- 設定ファイルの文字列
フロントエンド codegen.yml:
schema: ${REACT_APP_GRAPHQL_URL}
documents:
- './src/GraphQL/queries/query.ts'
- './src/GraphQL/mutations/mutation.ts'
overwrite: true
generates:
./src/generated/graphql.tsx:
plugins:
- typescript
- typescript-operations
- typescript-react-apollo
config:
skipTypename: false
withHooks: true
withHOC: false
withComponent: false
フロントエンド devDependencies:
{
"@graphql-codegen/cli": "^1.20.1",
"@graphql-codegen/typescript": "^1.20.2",
"@graphql-codegen/typescript-operations": "^1.17.14",
"@graphql-codegen/typescript-react-apollo": "^2.2.1",
}
npm スクリプト:
{
"generate": "graphql-codegen -r dotenv/config --watch --config codegen.yml",
"prebuild": "graphql-codegen -r dotenv/config --config codegen.yml"
}
.gitignoreに追加された ./src/generated/ ディレクトリ