relay 13.2.0 から relay-compiler が panic する
TL;DR
- relay-compiler 13.0.0 or 13.0.1 から 13.0.2 にあげると、デフォルトの言語設定が TypeScript から Flow に変わる
- TypeScript を使ってるプロジェクトでは relay-compiler が
thread 'main' panicked at 'Expect GraphQLAsts to exist.',
というエラーを吐くようになる
- TypeScript を使ってるプロジェクトでは relay-compiler が
- 設定ファイルで
language: "typescript"
を書くと、いままでと同じ動作になる - 設定ファイルは以下のいずれかが有効
-
relay.config.js
orrelay.config.json
として、引数無しでrelay-compiler
を実行 - JSON で書いて
relay-compiler
の第1引数に渡す
-
:) % yarn generate
[INFO] querying files to compile...
[INFO] [default] compiling...
thread 'main' panicked at 'Expect GraphQLAsts to exist.', /Users/runner/work/relay/relay/compiler/crates/relay-compiler/src/compiler.rs:333:18
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
ERROR: "generate:relay" exited with 1.
thread 'main' panicked at 'Expect GraphQLAsts to exist.',
何らかの要因でコード中から document を抜き出すのに失敗したか
thread 'main' panicked at 'Expect GraphQLAsts to exist.',
で雑に issue 検索すると、なんか訴えてる issue が見つかる
この issue 自体は Relay のいろんなところが使いにくいからなんとかしてくれ〜 的なのを example 出しながら訴えかけてるもので、関係なさそう
…と見せかけて、最初の example がまさに今困ってるやつと同じ
I attempted to set up Relay and then starred at this error for about 30 minutes:
"thread 'main' panicked at 'Expect GraphQLAsts to exist.', /Users/runner/work/relay/relay/compiler/crates/relay-compiler/src/compiler.rs:333:18"
.
language
オプションを指定したらよくなるらしい
relay-compiler
が Rust 実装になったタイミングで消えた記憶があるが…
(自分のポートフォリオサイトで対応した形跡があった)
v13.2.0 にめちゃめちゃ怪しい変更があった
language
の初期値が TypeScript だったのを消している
そうですね
Our default language is Flow for now (or JS, because we generate flow in comments). This issue is fixing the inconsistency between default config values in CLI and configs in JS/JSON files.
Rust 版 relay-compiler では設定ファイルからのみ言語を変更できる
(なぜ CLI オプションから落とした…)
$ cat relay.config.js
module.exports = {
language: "typescript",
schema: "schema.graphql",
src: "./src/",
};
README のとおりに yarn relay
すると yarn
に怒られた
$ yarn relay --config ./relay.config.js
Usage Error: Couldn't find a script named "relay".
$ yarn run [--inspect] [--inspect-brk] [-T,--top-level] [-B,--binaries-only] <scriptName> ...
yarn relay-compiler
にしたら relay に怒られた
--config
ないのか
$ yarn relay-compiler --config ./relay.config.js
error: Found argument '--config' which wasn't expected, or isn't valid in this context
If you tried to supply `--config` as a value rather than a flag, use `-- --config`
USAGE:
relay [OPTIONS] [CONFIG]
For more information try --help
--config
flag ではなく普通に引数で渡してみる
$ yarn relay-compiler relay.config.js
[ERROR] Failed to parse config file `relay.config.js`: expected value at line 1 column 1
syntax error :thinking:
json にしたら怒られない(??????)
$ yarn relay-compiler relay.config.json
[INFO] querying files to compile...
[INFO] [default] compiling...
[INFO] [default] compiled documents: 15 reader, 6 normalization, 15 operation text
[INFO] Done
relay.config.js{,on}
なら引数省略できると書いてたので、それで試したら JS でもいけた
$ cat relay.config.js
module.exports = {
language: "typescript",
schema: "schema.graphql",
src: "./src/",
};
$ yarn relay-compiler relay.config.json
[ERROR] Failed to read config file `relay.config.json`.
$ yarn relay-compiler
[INFO] querying files to compile...
[INFO] [default] compiling...
[INFO] [default] compiled documents: 15 reader, 6 normalization, 15 operation text
[INFO] Done
なんでや!!!