なぜ MJS を JSON に変換するのですか?
設定やフィクスチャが .mjs モジュール内にあり、JavaScript を実行せずに他のツールが読み取れる静的な .json ファイルとして必要な場合があります。その際、モジュールを実行してエクスポートされた値をシリアル化します。
MJS から JSON への変換方法
Node.js のワンライナー FREE
モジュールをインポートして JSON を出力します: node --input-type=module -e "import('./file.mjs').then(m=>console.log(JSON.stringify(m.default,null,2)))" > file.json
小さな Node スクリプト FREE
import data from './file.mjs' を行い、次に fs.writeFileSync('file.json', JSON.stringify(data, null, 2)) を実行する短い .mjs を作成し、node で実行します。
Visual Studio Code FREE
.mjs がすでにプレーンなオブジェクトリテラルをエクスポートしている場合は、そのオブジェクトを新しい .json ファイルにコピーし、export キーワードを削除して、すべてのキーを二重引用符で囲みます。
これらの形式について
An .mjs file is JavaScript source code that Node.js treats as an ECMAScript module, meaning it uses import and export instead of CommonJS require. The extension exists so Node can tell ES…
.MJS の詳細を開く →JSON ファイルは JavaScript Object Notation 形式のプレーンテキストデータファイルで、ウェブ API、アプリの設定、データのエクスポートに使用されます。Windows のメモ帳や Mac の TextEdit など、あらゆるテキストエディタで開くことができますが、本格的な作業には VS Code や Notepad++…
.JSON の詳細を開く →品質と注意点
- シリアル化可能なデータのみが保持されます。関数、クラス、
undefined、BigInt、シンボル、およびコメントは、JSON.stringify中に削除されるかエラーをスローします。 - モジュールを実行するとそのコードが実行されるため、変換中に副次作用(ネットワークコール、ファイル書き込みなど)が発生する可能性があります。
- モジュールが実行時にエクスポートを動的に構築する場合、JSON は特定の実行時点のスナップショットにすぎません。
よくある質問
なぜ .mjs を直接 .json に変換できないのですか?
.mjs はロジック、インポート、関数を含むことができる実行可能コードですが、JSON は静的な値のみを保持するためです。まずコードを実行しない限り、変換するものはありません。.mjs から JSON を取得するにはどうすればよいですか?
JSON.stringify に渡します。その結果を .json ファイルに書き込みます。何が失われますか?
undefined、BigInt、シンボル、コメントなどが該当します。プレーンなデータのみが残ります。