This repository was archived by the owner on Sep 2, 2023. It is now read-only.
This repository was archived by the owner on Sep 2, 2023. It is now read-only.
Is require
with ESM planned? #308
Closed
Description
I'm embarrassed to say that I can't quite tell from the Plan for New Modules Implementation.
Suppose I have a project where I'm using the CommonJS default, and I install a module with "type": "module"
in its package.json
from npm
. Is the current plan that I'll be able to use require
to load exports from that ESM module? (Or similarly, if I just try to require
an .mjs
file...)
(To be clear: This is purely a question, not a veiled suggestion or criticism. Here's an unveiled comment, though: Thank you for the updated ESM stuff!)
It doesn't work with the v12 nightlies, but hey, it's nightlies, stuff is in flux. :-)
My test setup, in case I'm just doing it wrong:
index.js
:
const { foo } = require("foo");
foo("Hi");
node_modules/foo/index.js
:
export function foo(...args) {
console.log("foo:", ...args);
}
node_modules/foo/package.json
:
{
"type": "module",
"name": "foo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
Command:
node12 --experimental-modules index.js
Result:
(node:20699) ExperimentalWarning: The ESM module loader is experimental. /home/blah/blah/node_modules/foo/index.js:1 export function foo(...args) { ^^^^^^ SyntaxError: Unexpected token export at Module._compile (internal/modules/cjs/loader.js:768:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:835:10) at Module.load (internal/modules/cjs/loader.js:693:32) at Function.Module._load (internal/modules/cjs/loader.js:620:12) at Module.require (internal/modules/cjs/loader.js:731:19) at require (internal/modules/cjs/helpers.js:14:16) at Object. (/home/tjc/temp/esmcheck/index.js:1:17) at Module._compile (internal/modules/cjs/loader.js:824:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:835:10) at Module.load (internal/modules/cjs/loader.js:693:32)
Metadata
Metadata
Assignees
Labels
No labels