graaljs inside JVM dynamicImport import() broken CJS interop.

Created on 3 Sep 2020  路  3Comments  路  Source: oracle/graaljs

graaljs inside JVM dynamic import broken interop

ESM & CJS can not dynamic import additional CJS modules inside it also accessing module object inside cjs breaks graalvm silent when loaded via dynamic import inside ESM

JS can also not dynamic import CJS same behavior!

Reproduce able example

module.js

module.exports = { str: 'myString'}
// When the following line gets uncommented the secund console log will not get called silent fails when this file gets imported via dynamic import() no matter if from CJS or ESM
//console.log('ctx',module)
console.log('The Import works correct as this sideEffect gets executed')

index.mjs

//then does not even get called sideEffects do execute
import('./module.js').then(function(x) { console.log('t',x)}) // then does not get called { default: { str: 'myString'}}
export const esm = 'Works' 

index.js

// Will not work
//then does not even get called sideEffects do execute
import('./module.js').then(function(x) { console.log('t',x)}) // then does not get called { default: { str: 'myString'}}

//This will work 
console.log(require('module.js'))
import('./index.esm.js').then(function ({esm}) { console.log(esm) })

Conclusion

dynamicImport import() at present only supports ESM no matter if used in ESM context or CJS
i think also that the current dynamic import implementation does not hornor .mjs === ESM and .cjs === commonjs(require,module)

Most helpful comment

Thanks @frank-dspeed, we'll have a look

All 3 comments

a little extra info maybe related if we would add into module.js

console.log('ctx',module) // befor the console.log('sideEffect')

it will silent fail all other instructions that come after that and so will not execute the secund console call any access to module when loaded via dynamic import makes graal simply fail silent while it would all work with require from cjs

Thanks @frank-dspeed, we'll have a look

Solved sorry for creating that issue it is related to a other project

Was this page helpful?
0 / 5 - 0 ratings