reactjs - TypeScript med Relay: Kan ikke finde genereret modul
I min MessageItem.tsx komponent har jeg følgende kode:
const data = useFragment(
graphql`
fragment MessageItem_message on Message {
date
body
}
`,
message as any
);
Efter at have kørt relay-compiler --src ./src --schema ../../schema.graphql --language typescript --artifactDirectory ./src/__generated__, bliver en modul ved navn MessageItem_message.graphql.ts genereret.
Men når jeg kører appen, giver den mig en fejl:
Kunne ikke kompilere.
./src/components/MessageItem.tsx
Modul ikke fundet: Kan ikke finde './__generated__/MessageItem_message.graphql'
Årsagen er, at kun komponenter i src-roden kan referere til den rigtige sti (./__generated__), mens komponenter i en mappe faktisk skal referere til stien (../__generated__), men det gør de ikke.
Hvordan kan jeg konfigurere stien?
Svar #1
Rediger .babelrc for at pege på artifactDirectory
// .babelrc
{
"plugins": [
[
"relay",
{
"artifactDirectory": "./src/ui/graphql/types"
}
]
]
}
Svar #2
Fjern "--artifactDirectory ./src/__generated__" fra relay-compiler-indstillingerne.
Som standard ser det ud til, at Relay-kompileren placerer en "__generated__"-mappe i den mappe, der indeholder enhver kildekode med GraphQL.
Som et resultat fungerer enhver "./__generated__" reference hvor som helst og på ethvert niveau i kildekodehierarkiet nu, som den skal.
Tak til @ThibaultBoursier for tippet.
PS Jeg spekulerer på, om --artifactDirectory-indstillingen bare er beregnet til at ændre navnet på artifaktmappen i stedet for dens placering?
