在我的MessageItem.tsx
组件中,我有以下代码:
const data = useFragment(
graphql`
fragment MessageItem_message on Message {
date
body
}
`,
message as any
);
运行relay-compiler --src ./src --schema ../../schema.graphql --language typescript --artifactDirectory ./src/__generated__
后,将生成名为MessageItem_message.graphql.ts
的模块。
但是当我运行该应用程序时,它给了我一个错误:
无法编译。
./ src / components / MessageItem.tsx
找不到模块:无法解析'./__ Generated __ / MessageItem_message.graphql'
原因是只有src根目录中的组件可以引用正确的路径(./__generated__
,而文件夹中的组件实际上需要引用路径(../__generated__
),但它没有这样做。
如何配置路径?
从中继编译器选项中删除“ --artifactDirectory ./src / __ genic __”。
默认情况下,似乎Relay编译器在目录中放置了一个“ __generation__”目录,其中包含任何包含GraphQL的源代码。
因此,任何“ ./__Generated__”引用现在都可以在源代码层次结构中的任意位置使用。
感谢@ThibaultBoursier提供的指针。
PS,我想知道--artifcactDirectory选项是否仅用于更改工件目录的名称,而不是其位置?