テキストデータは json 限定なうえ、かなり条件が厳しいです
動作確認環境
Next.js 14.2.13 (App router)
Next.js 12 から Edge Runtime が追加されました
これは Web API をベースとし、リソースの使用を抑えつつリクエストごとに振る舞いを変えられる機能を提供しています
対となる代表的なものは Node Runtime で、こちらは馴染み深いと思います
このように Node Runtime がサポートしている多くの機能は Edge Runtime で利用できないです
例えば fs や child_process などのモジュールは Edge Runtime では利用できません
そのため、サーバ上に置かれているファイルを読み込むことができないのですが require だけは使うことができます
データを事前に json に変換しておくことで、読み込むことができます
const data = require('../data.json')条件としては、
動的に読み込むファイルを変更できない (require は変数を設定できない)
path が使えないので、相対パス指定が必要 (__dirname も使えない)
js や json 形式にする必要がある
Edge には、データ容量の制限がある (Vercel だと最大 4 MB っぽい)
となるため、かなり苦しいです... 🥶
別にエンドポイントを立てて、そこから fetch した方が良いと思っていますが、最終手段にぜひ〜
おわりに
現在の Next.js は Edge ではなく PPR (Partial PreRendering) (Node Runtime) に力を入れていそうです 🐬
これから構築する人は、そもそも Edge の利用を避けた方が良いかもですね 🐶