ES Modules / CommonJS Modules

ES Modules == ESM
CommonJS Modules == CJS

ESM では以下のようにモジュールを読み込める:

import { foo } from 'bar'

CJS の場合は:

const { foo } = require('foo')

両者の違い:

ESM CJS
ブラウザ互換 Node.js
default で Strict not Strict
Async Sync

Node.js で実行する場合、まず拡張子でどちらのモジュールシステムが使われているかが判定される :

// foo.cjs
console.log(typeof module); // object

// foo.mjs
console.log(typeof module); // undefined

あるいは package.jsontype フィールドで指定も可能:

// package.json
{
  ...
  "type": "commonjs"
  ...
}

// foo.js
console.log(typeof module);
➜ node foo.js
object
// package.json
{
  ...
  "type": "commonjs"
  ...
}

// foo.js
console.log(typeof module);
➜ node foo.js
undefined

You'll only receive email when they publish something new.

More from daigo3
All posts