Skip to content

Commit 705726e

Browse files
committed
fix: resolve builtin modules correctly
close jestjs#15676
1 parent 42c8e7d commit 705726e

File tree

5 files changed

+25
-12
lines changed

5 files changed

+25
-12
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
- `[jest-resolver]` Implement the `defaultAsyncResolver` ([#15679](https://github.com/jestjs/jest/pull/15679))
66

7+
### Fixes
8+
9+
- `[jest-resolver]` Resolve builtin modules correctly ([#15683](https://github.com/jestjs/jest/pull/15683))
10+
711
### Chore & Maintenance
812

913
- `[*]` Remove and deprecate `jest-repl` package ([#15673](https://github.com/jestjs/jest/pull/15673))

e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ exports[`moduleNameMapper wrong array configuration 1`] = `
4141
12 | module.exports = () => 'test';
4242
13 |
4343
44-
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:1129:17)
44+
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:1142:17)
4545
at Object.require (index.js:10:1)
4646
at Object.require (__tests__/index.js:10:20)"
4747
`;
@@ -71,7 +71,7 @@ exports[`moduleNameMapper wrong configuration 1`] = `
7171
12 | module.exports = () => 'test';
7272
13 |
7373
74-
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:1129:17)
74+
at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:1142:17)
7575
at Object.require (index.js:10:1)
7676
at Object.require (__tests__/index.js:10:20)"
7777
`;

e2e/__tests__/__snapshots__/requireMissingExt.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ exports[`shows a proper error from deep requires 1`] = `
2626
12 | test('dummy', () => {
2727
13 | expect(1).toBe(1);
2828
29-
at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/index.js:875:11)
29+
at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/index.js:888:11)
3030
at Object.<anonymous> (node_modules/discord.js/src/index.js:21:12)
3131
at Object.require (__tests__/test.js:10:1)"
3232
`;

e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ exports[`show error message with matching files 1`] = `
3737
| ^
3838
9 |
3939
40-
at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/index.js:875:11)
40+
at Resolver._throwModNotFoundError (../../packages/jest-resolve/build/index.js:888:11)
4141
at Object.require (index.js:8:18)
4242
at Object.require (__tests__/test.js:8:11)"
4343
`;

packages/jest-resolve/src/defaultResolver.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8+
import {isBuiltin} from 'module';
89
import {fileURLToPath} from 'url';
910
import pnpResolver from 'jest-pnp-resolver';
1011
import {
@@ -73,6 +74,12 @@ function baseResolver(
7374
options: ResolverOptions,
7475
async?: true,
7576
): string | Promise<string> {
77+
// https://github.com/oxc-project/oxc-resolver/issues/565
78+
// https://github.com/jestjs/jest/issues/15676
79+
if (isBuiltin(path)) {
80+
return path;
81+
}
82+
7683
if (process.versions.pnp && options.allowPnp !== false) {
7784
return pnpResolver(path, options);
7885
}
@@ -111,13 +118,12 @@ function baseResolver(
111118
unrsResolver = unrsResolver.cloneWithOptions(resolveOptions);
112119
} else {
113120
unrsResolver = new ResolverFactory(resolveOptions);
114-
setResolver(unrsResolver);
115121
}
116122

123+
setResolver(unrsResolver);
124+
117125
const finalResolver = (
118-
resolve: (
119-
resolver: ResolverFactory,
120-
) => ResolveResult | Promise<ResolveResult>,
126+
resolve: () => ResolveResult | Promise<ResolveResult>,
121127
) => {
122128
const resolveWithPathsFallback = (result: ResolveResult) => {
123129
if (!result.path && paths?.length) {
@@ -131,12 +137,13 @@ function baseResolver(
131137
...resolveOptions,
132138
modules: paths,
133139
});
134-
return resolve(unrsResolver);
140+
setResolver(unrsResolver);
141+
return resolve();
135142
}
136143
}
137144
return result;
138145
};
139-
const result = resolve(unrsResolver!);
146+
const result = resolve();
140147
if ('then' in result) {
141148
return result.then(resolveWithPathsFallback).then(handleResolveResult);
142149
}
@@ -145,8 +152,10 @@ function baseResolver(
145152
);
146153
};
147154

148-
return finalResolver((resolver: ResolverFactory) =>
149-
async ? resolver.async(basedir, path) : resolver.sync(basedir, path),
155+
return finalResolver(() =>
156+
async
157+
? unrsResolver!.async(basedir, path)
158+
: unrsResolver!.sync(basedir, path),
150159
);
151160
}
152161

0 commit comments

Comments
 (0)