fetch するのは大げさだな、という気がしていたのです。内部的にどうなっているのか知りませんが、 module で読み込めたら素敵だと思いした。早速「 JSON Modules が使えるようになった」を参考に下のようにやってみました。
import test from "./test.json" assert {type: "json"}
相対パスで指定して「 ./ 」の明示は必須のようです。そうしたら――
Uncaught SyntaxError: Cannot use import statement outside a module
――「モジュールの外部で import ステートメントを使用することはできません」あれ? 2 時間悩んだのですが、見落としでした。見落としていたのは下の部分です。
<script type="module">
module であることを HTML で宣言しないといけないんですね。
で、このときはスクリプトを HTML 内に書くつもりだったのでこれでよかったんですが、気が変わって別ファイルにすることにしました。それでまた同じ問題が発生したのです。え、書いているコードが module であることをどうやって宣言するんでしょう。さらに 1 時間悩んで得た答えが下です。
<script src="test.js" type="module"></script>
ダサっ。いちいち HTML で宣言しないと module になれないみたいです。自分だけで完結しないなんて。そんなの fetch するほうがよっぽどいいじゃないですか。なんだこれ? 僕は何か見落としているのでしょうか。サーバサイドで書くときはまた違ってくるのかなぁ。今回 import は使わないことにしました。