- Run
npm i --save @std/esm
in your package or app directory. - Call
require("@std/esm")
before importing ECMAScript modules.
Enable ESM in the Node REPL by loading @std/esm
upon entering:
$ node
> require("@std/esm")
{}
> import { strictEqual } from "assert"
> strictEqual(2 + 2, 5)
AssertionError: 4 === 5
at repl:1:1
at REPLServer.defaultEval (repl.js:272:27)
...
@std/esm | ESM in Node 10 | |
---|---|---|
Dynamic import() | ✅ | ✅ |
Live bindings | ✅ | ✅ |
Loads .mjs as ESM | ✅ | ✅ |
Loads .js as ESM | ✅ | ❌ |
Loads gzipped modules (e.g. .js.gz , .mjs.gz ) | ✅ | ❌ |
Node 4+ support | ✅ | ❌ |
Top-level await for main ES module | ✅ * | ❌ |
Unordered specifiers import * as ns, v, {a,b} from "mod" | ✅ * | ❌ |
import {a,b} from "cjs" | ✅ * | ❌ |
export * as ns from "mod" | ✅ * | ❌ |
export v from "mod" | ✅ * | ❌ |
Top-level return in ESM | ✅ ** | ❌ |
__dirname in ESM | ✅ ** | ❌ |
__filename in ESM | ✅ ** | ❌ |
require in ESM | ✅ ** | ❌ |
Loads ESM with require from CJS | ✅ ** | ❌ |
* ESM expansions
** Carryover from CJS