fix(javascript): preserve trailing slash in package directory requests (#1615)

This commit is contained in:
Immanuel Tikhonov
2026-10-11 06:23:05 +08:00
committed by GitHub
parent 52331ab637
commit 423b11c8ef
2 changed files with 8 additions and 1 deletions
@@ -234,7 +234,8 @@ const resolvePackageSpecifier = (
if (rawExports === undefined || rawExports === null) {
if (subpath === ".")
return resolveDirectory(input, directory, metadata, new Set());
const candidate = confineCandidate(posix.join(directory, subpath.slice(2)));
// Preserve the trailing slash for a package directory request.
const candidate = confineCandidate(`${directory}/${subpath.slice(2)}`);
return typeof candidate === "string"
? resolveCandidate(input, candidate, new Set())
: candidate;
@@ -23,10 +23,14 @@ cliTest.for(["CLI", "stdio MCP"] as const)(
'const hidden = require("exported/hidden");',
'const missing = require("exported/missing");',
'new BrowserWindow({webPreferences:{preload:"exported/parser"}});',
'const file = require("fixture");',
'const packageDirectory = require("fixture/");',
].join("\n");
const files = {
"src/main.cjs": source,
"src/node_modules/fixture/parser.js": "module.exports = 1;",
"src/node_modules/fixture.js": "module.exports = 'file';",
"src/node_modules/fixture/index.js": "module.exports = 'directory';",
"node_modules/fixture/package.json": "{}",
"node_modules/fixture/parser.js": "module.exports = 2;",
"node_modules/nested/package.json": "{}",
@@ -59,6 +63,8 @@ cliTest.for(["CLI", "stdio MCP"] as const)(
const nativeRequire = createRequire(join(root, "src/main.cjs"));
const expectedTargets = {
"fixture/parser": "src/node_modules/fixture/parser.js",
fixture: "src/node_modules/fixture.js",
"fixture/": "src/node_modules/fixture/index.js",
"nested/parser": "node_modules/nested/parser/entry.js",
"exported/parser": "node_modules/exported/parser.cjs",
};