カメリアの記事

意味があることやないことを綴ります

JavaScript の module で JSON を読み込んでみた

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 は使わないことにしました。