Open
Description
A package.json
top-level field type
with a value of module
should make modules load as ES modules.
When I used that with graphql, I expected this to work (it didn't):
import { version } from "graphql"; // ❌
Importing from index.mjs
works fine:
import { version } from "graphql/index.mjs"; // ✅
Shouldn't ESM named exports work out of the box when Node's package type is set to module
?
Reproduce:
$ node -v
v14.6.0
$ echo '{ "name": "test", "version": "0.0.1", "type": "module" }' > package.json
$ npm i graphql
+ graphql@15.3.0
$ echo 'import { version } from "graphql"; console.log(version);' > test.js
$ node test.js
import { version } from "graphql"; console.log(version);
^^^^^^^
SyntaxError: The requested module 'graphql' is expected to be of type CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export.
For example:
import pkg from 'graphql';
const { version } = pkg;
at ModuleJob._instantiate (internal/modules/esm/module_job.js:98:21)
at async ModuleJob.run (internal/modules/esm/module_job.js:137:5)
at async Loader.import (internal/modules/esm/loader.js:162:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
Metadata
Metadata
Assignees
Labels
No labels