Skip to content

Commit b94482d

Browse files
committedJun 28, 2024
fix(cjs): implicit resolution to correctly try extensions
1 parent d120d14 commit b94482d

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed
 

‎src/cjs/api/resolve-implicit-extensions.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ const tryExtensions = (
1313
...args: Parameters<ResolveFilename>
1414
) => {
1515
for (const extension of implicitlyResolvableExtensions) {
16+
const newArgs = args.slice() as Parameters<ResolveFilename>;
17+
newArgs[0] += extension;
18+
1619
try {
17-
args[0] += extension;
18-
return resolve(...args);
20+
return resolve(...newArgs);
1921
} catch {}
2022
}
2123
};

‎tests/specs/api.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -286,16 +286,24 @@ export default testSuite(({ describe }, node: NodeApis) => {
286286
const { message, async } = api.require('./file', __filename);
287287
console.log(message);
288288
async.then(m => console.log(m.default));
289+
290+
api.require('./tsx?query=1', __filename);
291+
api.require('./jsx', __filename);
292+
api.require('./dir?query=3', __filename);
289293
`,
290294
...tsFiles,
295+
296+
'tsx.tsx': 'console.log(\'tsx\');',
297+
'jsx.jsx': 'console.log(\'jsx\');',
298+
'dir/index.jsx': 'console.log(\'dir\');',
291299
});
292300

293301
const { stdout } = await execaNode(fixture.getPath('require.cjs'), [], {
294302
nodePath: node.path,
295303
nodeOptions: [],
296304
});
297305

298-
expect(stdout).toBe('foo bar json file.ts\nasync');
306+
expect(stdout).toBe('foo bar json file.ts\ntsx\njsx\ndir\nasync');
299307
});
300308
});
301309
});

0 commit comments

Comments
 (0)
Please sign in to comment.