如何修复无法为“链接”创建中继容器
Posted
技术标签:
【中文标题】如何修复无法为“链接”创建中继容器【英文标题】:How can I fix Could not create Relay Container for `Link` 【发布时间】:2019-11-14 11:37:52 【问题描述】:我尝试关注 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
,但没有成功。
我该如何解决?
【问题讨论】:
【参考方案1】:升级到v4.0.0
时我遇到了类似的问题。似乎他们已经删除了对传递 graphql
文字作为第二个参数的支持,所以你应该传递一个像
export default createFragmentContainer(Link,
link: graphql`
fragment Link_link on Link
id
description
url
`
)
这很烦人,但它应该可以工作。我希望他们在以后的版本中解决这个问题。
【讨论】:
【参考方案2】:这是对hisa_py's的补充回答:
export default createFragmentContainer(ModuleName,
moduleName: graphql` // LINE 2
fragment Link_link on Link
id
description
url
`
)
注意只有第 2 行的第一个字符是小写的。
【讨论】:
以上是关于如何修复无法为“链接”创建中继容器的主要内容,如果未能解决你的问题,请参考以下文章