如何修复无法为 `Link` 创建中继容器
How can I fix Could not create Relay Container for `Link`
我尝试关注 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
但没有成功。
我该如何解决?
我在升级到 v4.0.0
时遇到了类似的问题。似乎他们已经取消了对将 graphql
文字作为第二个参数传递的支持,因此您应该传递一个像
这样的对象
export default createFragmentContainer(Link, {
link: graphql`
fragment Link_link on Link {
id
description
url
}
`
})
这很烦人,但应该可以。我希望他们在未来的版本中解决这个问题。
这是对 hisa_py's 答案的补充:
export default createFragmentContainer(ModuleName, {
moduleName: graphql` // LINE 2
fragment Link_link on Link {
id
description
url
}
`
})
请注意第 2 行 仅 第一个字符如何小写。
我尝试关注 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
但没有成功。
我该如何解决?
我在升级到 v4.0.0
时遇到了类似的问题。似乎他们已经取消了对将 graphql
文字作为第二个参数传递的支持,因此您应该传递一个像
export default createFragmentContainer(Link, {
link: graphql`
fragment Link_link on Link {
id
description
url
}
`
})
这很烦人,但应该可以。我希望他们在未来的版本中解决这个问题。
这是对 hisa_py's 答案的补充:
export default createFragmentContainer(ModuleName, {
moduleName: graphql` // LINE 2
fragment Link_link on Link {
id
description
url
}
`
})
请注意第 2 行 仅 第一个字符如何小写。