diff --git a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap index 18ccc60fbe68..a3759f42c96f 100644 --- a/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap +++ b/e2e/__tests__/__snapshots__/moduleNameMapper.test.ts.snap @@ -30,6 +30,6 @@ FAIL __tests__/index.js 12 | module.exports = () => 'test'; 13 | - at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:472:17) + at createNoMappedModuleFoundError (../../packages/jest-resolve/build/index.js:501:17) at Object.require (index.js:10:1) `; diff --git a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap index f88d38ad9041..7a66f6098b01 100644 --- a/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap +++ b/e2e/__tests__/__snapshots__/resolveNoFileExtensions.test.ts.snap @@ -33,6 +33,6 @@ FAIL __tests__/test.js | ^ 4 | - at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:230:17) + at Resolver.resolveModule (../../packages/jest-resolve/build/index.js:259:17) at Object.require (index.js:3:18) `; diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index 9f980af3c53d..a63d9f48fb08 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -19,6 +19,7 @@ "jest-haste-map": "^24.8.0", "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.3.0", "jest-resolve-dependencies": "^24.8.0", "jest-runner": "^24.8.0", "jest-runtime": "^24.8.0", diff --git a/packages/jest-core/src/watch.ts b/packages/jest-core/src/watch.ts index 5b97d1623709..3cbf0444d86c 100644 --- a/packages/jest-core/src/watch.ts +++ b/packages/jest-core/src/watch.ts @@ -15,6 +15,7 @@ import {formatExecError} from 'jest-message-util'; import {isInteractive, preRunMessage, specialChars} from 'jest-util'; import {ValidationError} from 'jest-validate'; import {Context} from 'jest-runtime'; +import Resolver from 'jest-resolve'; import {Config} from '@jest/types'; import { AllowedConfigOptions, @@ -275,6 +276,9 @@ export default function watch( isRunning = true; const configs = contexts.map(context => context.config); const changedFilesPromise = getChangedFilesPromise(globalConfig, configs); + // Clear cache for required modules + Resolver.clearCache(); + return runJest({ changedFilesPromise, contexts, diff --git a/packages/jest-resolve/src/defaultResolver.ts b/packages/jest-resolve/src/defaultResolver.ts index 42a0d31ee939..40e7949b12e4 100644 --- a/packages/jest-resolve/src/defaultResolver.ts +++ b/packages/jest-resolve/src/defaultResolver.ts @@ -44,6 +44,10 @@ export default function defaultResolver( }); } +export const clearResolverCache = () => { + checkedPaths.clear(); +}; + const REGEX_RELATIVE_IMPORT = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/; function resolveSync( diff --git a/packages/jest-resolve/src/index.ts b/packages/jest-resolve/src/index.ts index a3e09432dde2..b607ed8db450 100644 --- a/packages/jest-resolve/src/index.ts +++ b/packages/jest-resolve/src/index.ts @@ -12,7 +12,7 @@ import {sync as realpath} from 'realpath-native'; import chalk from 'chalk'; import nodeModulesPaths from './nodeModulesPaths'; import isBuiltinModule from './isBuiltinModule'; -import defaultResolver from './defaultResolver'; +import defaultResolver, {clearResolverCache} from './defaultResolver'; import {ResolverConfig} from './types'; type FindNodeModuleConfig = { @@ -79,6 +79,10 @@ class Resolver { this._modulePathCache = new Map(); } + static clearCache() { + clearResolverCache(); + } + static findNodeModule( path: Config.Path, options: FindNodeModuleConfig,