Как я могу исправить Не удалось создать Relay Container для `Link` - PullRequest
0 голосов
/ 03 июля 2019

Я стараюсь следовать учебнику о GraphQL и Relay.

И когда я запускаю его (или запускаю yarn test):

Invariant Violation: Could not create Relay Container for `Link`. Expected a set of GraphQL fragments, got `function () {
      const node = require("./__generated__/Link_link.graphql");

      if (node.hash && node.hash !== "4db5e0eb9875bd761c8f8ef68ea507f3") {
        console.error("The definition of 'Link_link' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data.");
      }

      return require("./__generated__/Link_link.graphql");
    }` instead.

      16 | }
      17 |
    > 18 | export default createFragmentContainer(Link, graphql`
         |                ^
      19 |     fragment Link_link on Link {
      20 |         id
      21 |         description

      at invariant (node_modules/fbjs/lib/invariant.js:40:15)

Я пытался изменить graphql.schema:

type Link implements Node {
  id: ID!
  description: String!
  url: String!
}

для соответствия

export default createFragmentContainer(Link, graphql`
    fragment Link_link on Link {
        id
        description
        url
    }
`)

пока я получаю ту же ошибку. Также я попытался удалить папку __generated__ и перезапустить relay-compiler безуспешно.

Как я могу это исправить?

1 Ответ

1 голос
/ 04 июля 2019

У меня была похожая проблема при обновлении до v4.0.0.Кажется, что они убрали поддержку для передачи литерала graphql в качестве второго аргумента, поэтому вместо этого вы должны передать объект типа

export default createFragmentContainer(Link, {
  link: graphql`
    fragment Link_link on Link {
      id
      description
      url
    }
  `
})

Это раздражает, но должно работать.Я надеюсь, что они исправят эту проблему в будущих версиях.

...