ikmnjrd.github.io

ESモジュール内でJSONを読み込む方法

Posted on 2022-08-06
目次

楽ができるNodeのバージョン

Node.jsv17.5~もしくはv16--experimental-json-modulesオブションを使えば利用できます。

/* index.js */
// An import assertion in a static import
import info from `./package.json` assert { type: `json` };

// An import assertion in a dynamic import
const { default: info } = await import("./package.json", {
  assert: {
    type: "json",
  },
});

v16でオプション付きで実行する場合は$ node --experimental-json-modules index.jsと実行します。 ちなみに--experimental-wasm-modulesというオプションでwasmも読み込めます。

対象のバージョン以外でやる方法

  1. JSONを読み込み自力でパースする
import { readFile } from 'fs/promises';
const json = JSON.parse(
  await readFile(
    new URL('./some-file.json', import.meta.url)
  )
);
  1. createRequireを使う
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const data = require("./data.json");

参考

本記事のソースコードおよび内容は以下のリンク先から引用しています。