diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ab58462f3c9..4479c3b32e90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - `[jest-mock]` Improve `spyOn` typings to handle optional properties ([#13247](https://github.com/facebook/jest/pull/13247)) - `[jest-snapshot]` Throw useful error when an array is passed as property matchers ([#13263](https://github.com/facebook/jest/pull/13263)) - `[jest-snapshot]` Prioritize parser used in the project ([#13323](https://github.com/facebook/jest/pull/13323)) +- `[jest-transform]` Attempt to work around issues with atomic writes on Windows ([#11423](https://github.com/facebook/jest/pull/11423)) ### Chore & Maintenance diff --git a/packages/jest-transform/src/ScriptTransformer.ts b/packages/jest-transform/src/ScriptTransformer.ts index b2b72b509c85..1cfaaca71ec6 100644 --- a/packages/jest-transform/src/ScriptTransformer.ts +++ b/packages/jest-transform/src/ScriptTransformer.ts @@ -946,6 +946,12 @@ const readCacheFile = (cachePath: string): string | null => { try { fileData = fs.readFileSync(cachePath, 'utf8'); } catch (e: any) { + // on windows write-file-atomic is not atomic which can + // result in this error + if (e.code === 'ENOENT' && process.platform === 'win32') { + return null; + } + e.message = `jest: failed to read cache file: ${cachePath}\nFailure message: ${e.message}`; removeFile(cachePath); throw e;