Directus 8 GraphQL API incompatible with Gatsby's gatsby-source-graphql plugin
A bare-bones Directus 8 project's GraphQL output looks fine in a viewer like iGraphQL, but throws all sorts of errors during compilation when importing the data into Gatsby via the gatsby-source-graphql plugin, as shown here:
Error: Interface field Directus_Node.id expected but Directus_DirectusActivity does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFileThumbnailItem does not provide it.
Interface field Directus_Node.id expected but Directus_Metadata does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollection does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollectionItem does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFieldItem does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusCollectionPreset does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusField does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFile does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusFolder does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusPermission does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusRelation does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusRevision does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusRole does not provide it.
Interface field Directus_Node.id expected but Directus_DirectusSetting does not provide it.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_eq" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_neq" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_contains" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_ncontains" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_rlike" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nrlike" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_empty" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nempty" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_null" does not.
Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "2fa_secret_nnull" does not.
Interface field Directus_Node.id expected but Directus_DirectusUser does not provide it.
For reference, in the gatsby plugin config I'm using a typeName of Directus and a fieldName of directus.
Honestly, I don't know if this is a Directus issue or a Gatsby issue, although the GraphQL spec says that names shouldn't start with a number, hence all the 2fa errors above. I suspect that Gatsby requires a particular edge - node hierarchy that the GraphQL spec doesn't require and Directus doesn't provide, but that's just a guess.
I can investigate this one.
I ran into this as well. It seems like a bunch of types (e.g. DirectusUser) implement the Node type, but don't have the required id: ID field.