LoginSignup
1
1

More than 5 years have passed since last update.

Node.js - ES6記法 - 8.xへのバージョンアップで必要なこと

Posted at

資料

・バージョン
https://github.com/nodejs/Release#release-schedule
・本家資料
http://exploringjs.com/es6/ch_modules.html#sec_design-goals-es6-modules

変更点

・babel等のトランスパイラを利用しなくてもnodeだけでES6 moduleの記述ができるように。
(他略)

必要な作業

サマリ

・バージョンを8.xへ
module.exports等はexport defaultを使う
・ファイルの拡張子を.jsから.mjsにする
・UnitTest等でtestモジュールを利用している場合は.mjsを対象に
・node起動時に--experimental-modulesオプションを付与して起動

詳細

▼ バージョンを8.xへ
今回は8.11.xに

package.json
  "engines": {
    "node": "v8.11.*"
  },

module.exports等はexport defaultを使う
・修正 前

class A {
   # クラス内容
}
module.exports = A;  # ここを

・修正 後

class A {
   // クラス内容
}
export default A; // こう

▼ファイルの拡張子を.jsから.mjsにする
下記のように変更するだけ
hoge.js → hoge.mjs

▼UnitTest等でtestモジュールを利用している場合は.mjsを対象に
UnitTest等でtestモジュールを利用している場合は、拡張子が.mjsになることで、対象ファイルから外れてしまう
よって、拡張子を追加する必要がある
例)jest

package.json
  "jest": {
    "verbose": true,
    "moduleFileExtensions": [
      "js",
      "json",
      "jsx",
      "node",
      "mjs"    // ここ
    ],
    "testMatch": [
      "**/__tests__/**/*.?(m)js?(x)",    // ここ
      "**/?(*.)(spec|test).?(m)js?(x)"    // ここ
    ],
    "collectCoverageFrom": [
      "**/routes/**/*.{js,jsx,mjs}",    // ここ
    ],
    "transform": {
      "^.+\\.(js|mjs)$": "babel-jest"    // ここも
    }
  },

・jestの設定
https://doc.ebichu.cc/jest/docs/ja/configuration.html

▼node起動時に--experimental-modulesオプションを付与して起動

node --experimental-modules app

おわり

何かあれば適宜コメント下さい。勉強になります故

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1