.mjs とはなんぞや?!
はじめに
npmで処理を追加する際に.mjs
に出会ったが、初めてみたので少し調べておく。
.mjsとは
mdnには...
どのファイルがモジュールで、どのファイルが通常の JavaScript であるかを明確にすることができます。
これにより、Node.js のようなランタイムや Babel のようなビルドツールで、モジュールファイルがモジュールとして解析されるようになります。
と書いてます。
要はNode.jsなんかで、パース時にそのファイルがESM/CJSどっちなのかを明確にする方法ということですかね。.mjs
のファイルは ESMとして扱われるようです。
あくまで開発環境段階での用途みたいです。↓
ブラウザでモジュールを正しく動作させるためには、サーバーが text/javascript などの JavaScript MIME タイプを含む Content-Type ヘッダでモジュールを提供していることを確認する必要があります。そうしないと、"The server responded with a non-JavaScript MIME type" のような厳格な MIME タイプチェックエラーが表示され、ブラウザは JavaScript を実行しません。ほとんどのサーバーでは、.js ファイルにはすでに正しい MIME タイプが設定されていますが、.mjs ファイルにはまだ設定されていません。
加えて、
通常の JavaScript ファイルに .js を使用するのと比較して、モジュールに .mjs を使用することの明確さを本当に重視しているが、上記の問題に直面したくない場合は、開発中に .mjs を使用し、ビルドステップで .js に変換することをおすすめします。
とのことなので、.mjs
でサーバーにアップする用途はあまりないでしょう。(設定すればできますが...)
もっと詳しく
.mjs
が採択された背景からこちらで解説されてます。↓
参考サイト
Discussion