0

I am trying to use graphql-codegen to generate my Typescript types by pointing it at my GraphQL type definitions.

However, I appear to get the error:

Failed to load schema from code file "./src/typeDefs.ts": Syntax Error: Expected Name, found "}".
GraphQLError: Syntax Error: Expected Name, found "}".

My codegen config is pointing at my typeDefs file

schema: "./src/typeDefs.ts"
generates:
  ./src/types.d.ts:
    config:
      useIndexSignature: true
    plugins:
      - typescript
      - typescript-resolvers
require:
  - tsconfig-paths/register

And my typeDefs looks like this:

import { gql } from "apollo-server";

const typeDefs = gql`
  type A { name: String }
`;

export default typeDefs;

I can get it to work if I create a schema.graphql file like so:

type A { name: String }

However, I need to be able to build some of my GraphQL enums from other sources like so:

import { gql } from "apollo-server";
import { Allergens } from "@prisma/client";

const allergens = Object.values(Allergens).join(" ");

const typeDefs = gql`

  enum Allergens {
    ${allergens}
  }

`;

So I can't have my schema in a .graphql file as I need to write it programmatically in a javascript file.

Is there a way to generate my TS types from the typeDefs generated from gql?

Stretch0
  • 8,362
  • 13
  • 71
  • 133

1 Answers1

0

I'm Charly, from The Guild, working on GraphQL Code Generator.

Loading a Schema definition from TypeScript files can be achieved by require: ['ts-node/register'] as documented here: https://www.the-guild.dev/graphql/codegen/docs/config-reference/require-field#typescript-support

Charly Poly
  • 384
  • 1
  • 8