mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
module: disallow CJS <-> ESM edges in a cycle from require(esm)
This patch disallows CJS <-> ESM edges when they come from require(esm) requested in ESM evalaution. Drive-by: don't reuse the cache for imported CJS modules to stash source code of required ESM because the former is also used for cycle detection. PR-URL: https://github.com/nodejs/node/pull/52264 Fixes: https://github.com/nodejs/node/issues/52145 Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
This commit is contained in:
1 parent
45f0dd0192
commit
db1746182b
28 files changed
+499
-47
No files matched your search
@@ -2489,6 +2489,21 @@ Accessing `Object.prototype.__proto__` has been forbidden using
|
||||
[`Object.setPrototypeOf`][] should be used to get and set the prototype of an
|
||||
object.
|
||||
|
||||
<a id="ERR_REQUIRE_CYCLE_MODULE"></a>
|
||||
|
||||
### `ERR_REQUIRE_CYCLE_MODULE`
|
||||
|
||||
> Stability: 1 - Experimental
|
||||
|
||||
When trying to `require()` a [ES Module][] under `--experimental-require-module`,
|
||||
a CommonJS to ESM or ESM to CommonJS edge participates in an immediate cycle.
|
||||
This is not allowed because ES Modules cannot be evaluated while they are
|
||||
already being evaluated.
|
||||
|
||||
To avoid the cycle, the `require()` call involved in a cycle should not happen
|
||||
at the top-level of either a ES Module (via `createRequire()`) or a CommonJS
|
||||
module, and should be done lazily in an inner function.
|
||||
|
||||
<a id="ERR_REQUIRE_ASYNC_MODULE"></a>
|
||||
|
||||
### `ERR_REQUIRE_ASYNC_MODULE`
|
||||
|
||||
Reference in new issue
Block a user