Commit 6b07f2fb5d6 for nodejs
commit 6b07f2fb5d685c23f600049f5a44d0d5fd8ca657
Author: Lazizbek Ergashev <lazerg2@gmail.com>
Date: Sun Oct 11 21:10:53 2026 +0500
module: fix require of imports with package map
Signed-off-by: lazerg <lazerg2@gmail.com>
Assisted-by: Claude Code
PR-URL: https://github.com/nodejs/node/pull/66565
Fixes: https://github.com/nodejs/node/issues/66562
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Jacob Smith <jacob@frende.me>
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 2869abba869..f9c4a62f023 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -1523,7 +1523,7 @@ Module._resolveFilename = function(request, parent, isMain, options) {
const conditions = (options?.conditions) || getCjsConditions();
// Try package map resolution for bare specifiers (if --experimental-package-map is set)
- if (!isRelative(request) && !path.isAbsolute(request)) {
+ if (request[0] !== '#' && !isRelative(request) && !path.isAbsolute(request)) {
const resolved = tryPackageMapResolveCJS(request, parent, conditions);
if (resolved !== undefined) {
return resolved;
diff --git a/test/fixtures/package-map/root/package.json b/test/fixtures/package-map/root/package.json
index 1b5c89e7053..0ad7afc9c8f 100644
--- a/test/fixtures/package-map/root/package.json
+++ b/test/fixtures/package-map/root/package.json
@@ -3,5 +3,8 @@
"type": "module",
"exports": {
".": "./index.js"
+ },
+ "imports": {
+ "#root": "./index.js"
}
}
diff --git a/test/parallel/test-require-package-map.js b/test/parallel/test-require-package-map.js
index 08ec289346a..d7156b0877a 100644
--- a/test/parallel/test-require-package-map.js
+++ b/test/parallel/test-require-package-map.js
@@ -2,6 +2,7 @@
const common = require('../common');
const fixtures = require('../common/fixtures');
+const { spawnSyncAndAssert } = require('../common/child_process');
const assert = require('node:assert');
const { spawnSync } = require('node:child_process');
const { symlinkSync, writeFileSync } = require('node:fs');
@@ -132,6 +133,21 @@ describe('CJS: --experimental-package-map', { concurrency: !process.env.TEST_PAR
assert.strictEqual(status, 0, stderr);
});
+ it('resolves package imports without consulting the map', () => {
+ spawnSyncAndAssert(process.execPath, [
+ '--no-warnings',
+ '--experimental-package-map', packageMapPath,
+ '-e',
+ `const root = require('#root'); console.log(root.default);`,
+ ], {
+ cwd: fixtures.path('package-map/root'),
+ encoding: 'utf8',
+ }, {
+ stderr: '',
+ stdout: /root-package/,
+ });
+ });
+
it('throws when parent not in map', () => {
const { status, stderr } = spawnSync(process.execPath, [
'--no-warnings',