本記事では、Node.jsでWarning: To load an ES module, set “type”: “module” in the package.json or use the .mjs extension.のエラーが返された時の原因と対処法について解説しています。
Node.jsの学習におすすめ書籍
Node.js超入門[第4版]
メリット
- 今月出版されたNode.js超入門 第3版の改訂版
- 最新のNode.jsを学ぶことができる
ポチップ
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード
メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次
原因と対処法
このエラーが出る原因は、Node.jsでimportやexportなどのES moduleの記述をしているためです。今ではNode.jsでES moduleは当たり前に使われていますが元々はCommomJSです。
もし、CommomJSではなくES moduleの記述をしたい場合は「拡張子の変更」または「package.jsonの設定追加」のどちらかを設定をする必要があります。それぞれ詳しく見ていきましょう。
対処法①:拡張子の変更
対処法の一つ目は、拡張子を.js→.mjsに変更します。
実際に拡張子を.mjsに変更して動作するか確認してみましょう。
export const plusFn = (num1, num2) => num1 + num2;
import { plusFn } from "./plusFn.mjs";
const result = plusFn(10, 20);
console.log(result);
node .\main.mjs
> 30
エラーが出力されずに実行結果が返されていることが確認できました。
対処法②:package.jsonの設定追加
対処法の二つ目は、package.jsonファイルの設定に「“type”: “module”」を追加します。
{
"type": "module",
}
実際に拡張子を.mjsに変更して動作するか確認してみましょう。jsファイルの内容は対処法①と同じためnodeコマンド実行時の結果のみ掲載しています。
node .\main.mjs
> 30
エラーが出力されずに実行結果が返されていることが確認できました。