Relay: [relay-compiler] Compiler doesn't work for connections when types are non-nullable

Created on 30 May 2017  路  4Comments  路  Source: facebook/relay

I'm having an issue with the relay-compiler that fails when fields are required.

Here's a simplified version of the schema that I used when I was hitting the issue.

allPosts(after: String, before: String, first: Int, last: Int): PostConnection!

type PostConnection {
  pageInfo: PageInfo!
  edges: [PostEdge]
}

type PostEdge {
  node: Post!
  cursor: String!
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}

type Post {
  id: ID!
  title: String!
}

Using required fields on the connections caused the compiler to fail with the following error:

Invariant Violation: RelaySchemaUtils: Expected type `PostConnection!` to be an object or interface type.

image

Using the following schema without required fields works:

allPosts(after: String, before: String, first: Int, last: Int): PostConnection

type PostConnection {
  pageInfo: PageInfo
  edges: [PostEdge]
}

type PostEdge {
  node: Post
  cursor: String
}

type PageInfo {
  hasNextPage: Boolean
  hasPreviousPage: Boolean
  startCursor: String
  endCursor: String
}

type Post {
  id: ID!
  title: String!
}

Feel free to take a look at the full project (note that the README doesn't yet include instructions about setting up the relay-compiler).

bug wontfix

Most helpful comment

All 4 comments

If you want to take a look, the cause is most likely in RelayConnectionTransform.validateConnectionType.

Adding a new connection to the test schema that's non-nullable to extend the test in RelayConnectionTransform-test.js would be great!

Hey Jan, thanks for thee hint! This seems like a slightly bigger refactor since assertTypeWithFields is used in multiple places, I'm not really comfortable doing that right now. I'll be releasing a getting started tutorial about Relay Modern today where I adjust the schema and remove the constraint for certain fields to be required in order to work around the issue.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

fedbalves picture fedbalves  路  3Comments

johntran picture johntran  路  3Comments

scotmatson picture scotmatson  路  3Comments

mike-marcacci picture mike-marcacci  路  3Comments

janicduplessis picture janicduplessis  路  3Comments