ES6 importをNode.jsで利用:詳細解説とサンプルコード
Node.jsでES6 importを使う方法
--experimental-modules フラグを使う
Node.js v12.17.0以降では、--experimental-modules
フラグを指定することで、ES6モジュールをネイティブにサポートします。
node --experimental-modules index.js
この方法を使う場合、以下の点に注意する必要があります。
- すべてのファイルが
.mjs
拡張子でなければなりません。 .js
ファイルはES6モジュールとして扱われません。- デフォルトエクスポートは
export default
を使って指定する必要があります。
Babelは、JavaScriptの最新構文を古いブラウザや環境で使えるように変換するツールです。Babelを使って、ES6 importをNode.js v12.17.0より前のバージョンで使用することができます。
Babelを使うには、以下の手順が必要です。
- プロジェクトにBabelをインストールします。
npm install --dev babel-cli babel-preset-env
.babelrc
ファイルを作成し、以下の内容を記述します。
{
"presets": ["env"]
}
- すべてのファイルの拡張子を
.js
から.mjs
に変更します。 - 以下のコマンドを使って、ES6モジュールをビルドします。
babel src -d dist
- ビルドされたファイルを実行します。
node dist/index.js
- Babelのバージョンによって、サポートされる構文が異なります。
- Babelの設定ファイルは、プロジェクトごとに作成する必要があります。
Node.jsでES6 importを使うには、--experimental-modules
フラグを使うか、Babelを使うかの2つの方法があります。どちらの方法を使うかは、プロジェクトの環境や要件によって決定します。
import { add } from './math.mjs';
console.log(add(1, 2)); // 3
export default function sayHello() {
console.log('Hello!');
}
math.mjs
export function add(a, b) {
return a + b;
}
package.json
{
"name": "my-app",
"version": "1.0.0",
"description": "My application",
"main": "index.mjs",
"dependencies": {
"babel-cli": "^7.18.2",
"babel-preset-env": "^7.18.2"
},
"devDependencies": {
"nodemon": "^2.0.15"
},
"scripts": {
"start": "node --experimental-modules index.mjs",
"build": "babel src -d dist",
"dev": "nodemon --watch src dist/index.js"
}
}
実行方法
- 上記のコードをファイルに保存します。
babel src -d dist
- 以下のコマンドを使って、ビルドされたファイルを実行します。
node dist/index.js
出力結果
3
Hello!
解説
このサンプルコードでは、以下のことを行っています。
index.mjs
ファイルで、math.mjs
ファイルからadd
関数をインポートしています。math.mjs
ファイルで、add
関数をエクスポートしています。package.json
ファイルで、Babelの設定を指定しています。start
スクリプトを使って、--experimental-modules
フラグを指定してindex.mjs
ファイルを実行しています。
Node.jsでES6 importを使う他の方法
esm
パッケージは、Node.js v12.17.0より前のバージョンでES6モジュールをサポートするライブラリです。
npm install --save esm
esm index.mjs
TypeScriptは、JavaScriptのスーパーセットであり、型システムやクラスなどの機能を追加することができます。TypeScriptを使って、ES6 importをNode.js v12.17.0より前のバージョンで使用することができます。
npm install --save typescript
- 以下のコマンドを使って、TypeScriptファイルをコンパイルします。
tsc index.ts
node index.js
Node.jsでES6 importを使うには、さまざまな方法があります。どの方法を使うかは、プロジェクトの環境や要件によって決定します。
node.js es6-modules