带中继的TypeScript:无法解析生成的模块

问题描述 投票:2回答:1

在我的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__),但它没有这样做。

如何配置路径?

reactjs typescript relayjs
1个回答
0
投票

从中继编译器选项中删除“ --artifactDirectory ./src / __ genic __”。

默认情况下,似乎Relay编译器在目录中放置了一个“ __generation__”目录,其中包含任何包含GraphQL的源代码。

因此,任何“ ./__Generated__”引用现在都可以在源代码层次结构中的任意位置使用。

感谢@ThibaultBoursier提供的指针。

PS,我想知道--artifcactDirectory选项是否仅用于更改工件目录的名称,而不是其位置?

© www.soinside.com 2019 - 2024. All rights reserved.