Skip to content

import(CJS_USE_DEASYNC) or createRequire(import.meta.url)(CJS_USE_DEASYNC) may leads to endless loop #178

@loynoir

Description

@loynoir

Reproduce

https://github.com/loynoir/reproduce-node-47971

Expected

$ node ./test/test-require.cjs
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
{ plugin: [Module: null prototype] { foo: [Function: foo] } }

Actual

$ node ./test/test-import.mjs
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
...
# endless loop
...
$ node ./test/test-createRequire.mjs
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
waiting import('./plugin.mjs')
...
# endless loop
...

Related

nodejs/node#47971

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions