diff --git a/packages/metro-file-map/src/cache/DiskCacheManager.js b/packages/metro-file-map/src/cache/DiskCacheManager.js index 6458b9a7c9..f791d38365 100644 --- a/packages/metro-file-map/src/cache/DiskCacheManager.js +++ b/packages/metro-file-map/src/cache/DiskCacheManager.js @@ -68,8 +68,14 @@ export class DiskCacheManager implements CacheManager { async read(): Promise { try { return deserialize(readFileSync(this._cachePath)); - } catch {} - return null; + } catch (e) { + if (e?.code === 'ENOENT') { + // Cache file not found - not considered an error. + return null; + } + // Rethrow anything else. + throw e; + } } async write( diff --git a/packages/metro-file-map/src/index.js b/packages/metro-file-map/src/index.js index 19df822553..b8019df8b5 100644 --- a/packages/metro-file-map/src/index.js +++ b/packages/metro-file-map/src/index.js @@ -411,7 +411,15 @@ export default class HasteMap extends EventEmitter { this._options.perfLogger?.point('read_start'); try { data = await this._cacheManager.read(); - } catch {} + } catch (e) { + this._console.warn( + 'Error while reading cache, falling back to a full crawl:\n', + e, + ); + this._options.perfLogger?.annotate({ + string: {cacheReadError: e.toString()}, + }); + } data = data ?? this._createEmptyMap(); this._options.perfLogger?.point('read_end');