我尝试关注the tutorial关于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
,但没有成功。
我该如何解决?
答案 0 :(得分:1)
升级到v4.0.0
时遇到类似的问题。似乎他们已经删除了将graphql
文字作为第二个参数传递的支持,因此您应该传递类似
export default createFragmentContainer(Link, {
link: graphql`
fragment Link_link on Link {
id
description
url
}
`
})
这很烦人,但它应该可以工作。我希望他们能在以后的版本中解决此问题。
答案 1 :(得分:0)
这是对hisa_py's答案的补充:
export default createFragmentContainer(ModuleName, {
moduleName: graphql` // LINE 2
fragment Link_link on Link {
id
description
url
}
`
})
注意如何仅第 2 行的第一个字符是小写的。