summaryrefslogtreecommitdiff
path: root/ext/node/02_require.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-12-19 17:09:54 +0100
committerGitHub <noreply@github.com>2022-12-19 17:09:54 +0100
commit383d40a33bee842a7462fb157f5faca263598d87 (patch)
treef80323ac9220a3f339bf474a93485f3d2f7d7af0 /ext/node/02_require.js
parentd1f6b519907d3778f02436cf1fcc4f94f563acf8 (diff)
fix(npm): conditional exports with --node-modules-dir (#17111)
This commit fixes conditional exports in `require()` implementation if `--node-modules-dir` flag is used.
Diffstat (limited to 'ext/node/02_require.js')
-rw-r--r--ext/node/02_require.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/ext/node/02_require.js b/ext/node/02_require.js
index 2174ff8a9..0f11253f2 100644
--- a/ext/node/02_require.js
+++ b/ext/node/02_require.js
@@ -303,7 +303,12 @@
// 1. name/.*
// 2. @scope/name/.*
const EXPORTS_PATTERN = /^((?:@[^/\\%]+\/)?[^./\\%][^/\\%]*)(\/.*)?$/;
- function resolveExports(modulesPath, request, parentPath) {
+ function resolveExports(
+ modulesPath,
+ request,
+ parentPath,
+ usesLocalNodeModulesDir,
+ ) {
// The implementation's behavior is meant to mirror resolution in ESM.
const [, name, expansion = ""] =
StringPrototypeMatch(request, EXPORTS_PATTERN) || [];
@@ -312,6 +317,7 @@
}
return core.ops.op_require_resolve_exports(
+ usesLocalNodeModulesDir,
modulesPath,
request,
name,
@@ -349,7 +355,12 @@
if (curPath && stat(curPath) < 1) continue;
if (!absoluteRequest) {
- const exportsResolved = resolveExports(curPath, request, parentPath);
+ const exportsResolved = resolveExports(
+ curPath,
+ request,
+ parentPath,
+ usesLocalNodeModulesDir,
+ );
if (exportsResolved) {
return exportsResolved;
}