ESM-CJS interop test
This project is maintained by JSerFeng
For readablility some shortcuts are applied:
named
named: 'named'[named]
[named]: 'named' (non enumerable)default
default: 'default'[default]
[default]: 'default' (non enumerable)__esModule
__esModule: true[__esModule]
[__esModule]: true (non enumerable)[G]
[Getter][Module]
[Symbol(Symbol.toStringTag)]: 'Module'import * as x and import() are excluded from these tables as they are too different.
.mjs)| rspack-webpack | fixture | rspack | webpack |
|---|---|---|---|
import * as x; x === await import() |
default-export-esModule-esm-reexport default-export-esm named-and-default-export-esModule-esm-reexport named-and-default-export-esm named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-export-esm order-esm |
false |
true |
.mjs)When using .mjs Webpack tries to be compatible to Node.js.
| webpack-node | fixture | webpack | node |
|---|---|---|---|
import ximport { default as x } |
default-export-esModule-esm-reexport named-and-default-export-esModule-esm-reexport named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-export-esm order-esm single-string-export-esm-reexport tla-esm-esm-reexport |
undefined + errors |
syntax error |
import ximport { default as x }import { named as x }import { __esModule as x } |
tla-esModule tla-esModule-esm-reexport |
compilation error | syntax error |
import * as x; x.default |
default-export-esModule-esm-reexport named-and-default-export-esModule-esm-reexport named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-export-esm order-esm single-string-export-esm-reexport tla-esm-esm-reexport |
undefined + errors |
undefined |
import * as x; x.defaultimport * as x; ident(x).defaultimport * as x; x.namedimport * as x; ident(x).namedimport * as x; x.__esModuleimport * as x; ident(x).__esModuleawait import() === require()import * as x; x === await import() |
tla-esModule tla-esModule-esm-reexport |
compilation error | runtime error |
import { named as x } |
default-export default-export-esModule default-export-esModule-esm-reexport default-export-esm order order-esModule order-esm |
undefined + errors |
syntax error |
import { named as x } |
default-export-runtime single-class-export single-empty-string-export single-function-export single-promise-object-export single-promise-object-with-default-export single-promise-string-export single-string-export single-string-export-defined single-string-export-duplicate single-string-export-esm-reexport single-string-export-getter single-string-export-live single-string-export-reexport |
undefined |
syntax error |
import { named as x } |
named-and-default-export-getter named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-non-enumerable-inherited named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export-runtime named-export-runtime-esModule single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export |
'named' |
syntax error |
import { named as x }import * as x; x.namedimport * as x; ident(x).named |
named-and-default-export-live | 'named' |
'named-outdated' |
import { named as x } |
single-null-export | type error | syntax error |
import * as x; x.named |
default-export default-export-esModule default-export-esModule-esm-reexport default-export-esm order order-esModule order-esm |
undefined + errors |
undefined |
import * as x; x.namedimport * as x; ident(x).named |
named-and-default-export-getter named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-non-enumerable-inherited named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export-runtime named-export-runtime-esModule single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export |
'named' |
undefined |
import * as x; x.named |
single-null-export | type error | undefined |
import { __esModule as x } |
default-export default-export-esm named-and-default-export named-and-default-export-duplicate named-and-default-export-esm named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-and-default-export-getter named-and-default-export-live named-and-default-export-non-enumerable named-and-default-export-reexport named-and-null-default-export named-and-null-default-export-non-enumerable named-export named-export-esm named-export-non-enumerable order order-esm require-circular require-circular-self require-conditional-execution tla-esm tla-esm-esm-reexport |
true + errors |
syntax error |
import { __esModule as x } |
default-export-runtime named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-non-enumerable-inherited named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export-runtime named-export-runtime-esModule single-class-export single-empty-string-export single-function-export single-null-export single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export single-promise-object-export single-promise-object-with-default-export single-promise-string-export single-string-export single-string-export-defined single-string-export-duplicate single-string-export-esm-reexport single-string-export-getter single-string-export-live single-string-export-reexport |
true |
syntax error |
import * as x; x.__esModule |
default-export default-export-esm named-and-default-export named-and-default-export-duplicate named-and-default-export-esm named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-and-default-export-getter named-and-default-export-live named-and-default-export-non-enumerable named-and-default-export-reexport named-and-null-default-export named-and-null-default-export-non-enumerable named-export named-export-esm named-export-non-enumerable order order-esm require-circular require-circular-self require-conditional-execution tla-esm tla-esm-esm-reexport |
true + errors |
undefined |
import * as x; x.__esModule |
default-export-runtime named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-non-enumerable-inherited named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export-runtime named-export-runtime-esModule single-class-export single-empty-string-export single-function-export single-null-export single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export single-promise-object-export single-promise-object-with-default-export single-promise-string-export single-string-export single-string-export-defined single-string-export-duplicate single-string-export-esm-reexport single-string-export-getter single-string-export-live single-string-export-reexport |
true |
undefined |
import * as x; ident(x).__esModule |
default-export default-export-esm default-export-runtime named-and-default-export named-and-default-export-duplicate named-and-default-export-esm named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-and-default-export-getter named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-live named-and-default-export-non-enumerable named-and-default-export-non-enumerable-inherited named-and-default-export-reexport named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export named-and-null-default-export-non-enumerable named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export named-export-esm named-export-non-enumerable named-export-runtime named-export-runtime-esModule order order-esm require-circular require-circular-self require-conditional-execution single-class-export single-empty-string-export single-function-export single-null-export single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export single-promise-object-export single-promise-object-with-default-export single-promise-string-export single-string-export single-string-export-defined single-string-export-duplicate single-string-export-esm-reexport single-string-export-getter single-string-export-live single-string-export-reexport tla-esm tla-esm-esm-reexport |
true |
undefined |
x = require(); x.defaultx = require(); ident(x).default |
default-export-esModule-esm-reexport named-and-default-export-esModule-esm-reexport named-and-default-export-esm-reexport |
undefined |
'default' |
x = require(); x.defaultx = require(); ident(x).default{ named } = require()x = require(); x.namedx = require(); ident(x).named{ __esModule } = require()x = require(); x.__esModulex = require(); ident(x).__esModulex = require() |
tla-esModule tla-esModule-esm-reexport |
compilation error | require(tla esm) not allowed |
x = require(); x.defaultx = require(); ident(x).default{ named } = require()x = require(); x.namedx = require(); ident(x).named{ __esModule } = require()x = require(); x.__esModulex = require(); ident(x).__esModule |
tla-esm tla-esm-esm-reexport |
undefined |
require(tla esm) not allowed |
{ __esModule } = require()x = require(); x.__esModulex = require(); ident(x).__esModule |
named-and-default-export-esm-esm-reexport named-and-default-export-esm-reexport named-export-esm order-esm single-string-export-esm-reexport |
true |
undefined |
x = require() |
default-export-esModule-esm-reexport | { [__esModule], [Module] } |
{ [__esModule], default } |
x = require() |
default-export-esm | { [__esModule], default: [G], [Module] } |
[Module: null prototype] { __esModule, default, [Module] } |
x = require() |
named-and-default-export-esModule-esm-reexport | { [__esModule], named: [G], [Module] } |
{ [__esModule], named, default } |
x = require() |
named-and-default-export-esm | { [__esModule], default: [G], named: [G], [Module] } |
[Module: null prototype] { __esModule, default, named, [Module] } |
x = require() |
named-and-default-export-esm-esm-reexport named-export-esm |
{ [__esModule], named: [G], [Module] } |
[Module: null prototype] { named, [Module] } |
x = require() |
named-and-default-export-esm-reexport | { [__esModule], named: [G], [Module] } |
{ named, default } |
x = require() |
order-esm | { [__esModule], a: [G: 'a'], b: [G: 'b'], c: [G: 'c'], [Module] } |
[Module: null prototype] { a, b, c, [Module] } |
x = require() |
single-string-export-esm-reexport | { '0': [G: 's'], '1': [G: 'i'], '2': [G: 'n'], '3': [G: 'g'], '4': [G: 'l'], '5': [G: 'e'], [__esModule], [Module] } |
'single' |
x = require() |
tla-esm | Promise { { [__esModule], default: [G], named: [G], [Module] }, Symbol(webpack exports): { [__esModule], default: [G], named: [G], [Module] }, Symbol(webpack queues): { [Function (anonymous)] [length]: 1, [name]: '' } } |
require(tla esm) not allowed |
x = require() |
tla-esm-esm-reexport | Promise { { [__esModule], named: [G], [Module] }, Symbol(webpack exports): { [__esModule], named: [G], [Module] }, Symbol(webpack queues): { [Function (anonymous)] [length]: 1, [name]: '' } } |
require(tla esm) not allowed |
await import() === require() |
default-export-esModule default-export-esModule-esm-reexport default-export-esm named-and-default-export-babel-getter named-and-default-export-esModule named-and-default-export-esModule-duplicate named-and-default-export-esModule-esm-reexport named-and-default-export-esModule-reexport named-and-default-export-esm named-and-default-export-esm-reexport named-and-default-export-getter-esModule named-and-default-export-runtime-esModule named-and-null-default-export-esModule named-and-null-default-export-runtime-esModule named-export-esModule named-export-runtime-esModule order-esModule single-string-export-esm-reexport |
true |
false |
await import() === require() |
tla-esm tla-esm-esm-reexport |
false |
require(tla esm) not allowed |
import * as x; x === await import() |
default-export default-export-esModule default-export-runtime named-and-default-export named-and-default-export-babel-getter named-and-default-export-duplicate named-and-default-export-esModule named-and-default-export-esModule-duplicate named-and-default-export-esModule-reexport named-and-default-export-getter named-and-default-export-getter-esModule named-and-default-export-inherited named-and-default-export-live named-and-default-export-non-enumerable named-and-default-export-non-enumerable-inherited named-and-default-export-reexport named-and-default-export-runtime named-and-default-export-runtime-esModule named-and-null-default-export named-and-null-default-export-esModule named-and-null-default-export-non-enumerable named-and-null-default-export-runtime named-and-null-default-export-runtime-esModule named-export named-export-esModule named-export-non-enumerable named-export-runtime named-export-runtime-esModule order order-esModule require-circular require-circular-self require-conditional-execution single-class-export single-empty-string-export single-function-export single-null-export single-object-export single-object-with-default-export single-object-with-default-export-duplicate single-object-with-null-default-export single-promise-object-export single-promise-object-with-default-export single-promise-string-export single-string-export single-string-export-defined single-string-export-duplicate single-string-export-getter single-string-export-live single-string-export-reexport |
false |
true |