Node.js

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 / Expressの学習におすすめ参考書
Node.js超入門 第3版

本書情報
著者掌田 津耶乃
発売日2020/7/18
ページ数480ページ
Kindle版
(電子書籍)
レビュー
(Amazon)
(44件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

原因と対処法

このエラーが出る原因は、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アクセスランキング にほんブログ村