【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

Warning: To load an ES module, set “type”: “module” in the package.json or use the .mjs extension.の原因と対処法

本記事では、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版]
総合評価
( 5 )
メリット
  • 今月出版されたNode.js超入門 第3版の改訂版
  • 最新のNode.jsを学ぶことができる
楽天ブックス
¥3,300 (2024/05/21 14:45時点 | 楽天市場調べ)
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著: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

エラーが出力されずに実行結果が返されていることが確認できました。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次