Skip to content

Commit 31caef8

Browse files
committed
esm: ensure watch mode restarts after syntax errors
Move watch dependency reporting earlier in module resolution to ensure file dependencies are tracked even when parsing fails. Fixes: #61153
1 parent ce2ec3d commit 31caef8

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/internal/modules/esm/loader.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,12 @@ class ModuleLoader {
542542
*/
543543
#getOrCreateModuleJobAfterResolve(parentURL, resolveResult, request, requestType) {
544544
const { url, format } = resolveResult;
545+
546+
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
547+
const type = requestType === kRequireInImportedCJS ? 'require' : 'import';
548+
process.send({ [`watch:${type}`]: [url] });
549+
}
550+
545551
// TODO(joyeecheung): update the module requests to use importAttributes as property names.
546552
const importAttributes = resolveResult.importAttributes ?? request.attributes;
547553
let job = this.loadCache.get(url, importAttributes.type);
@@ -570,11 +576,6 @@ class ModuleLoader {
570576
assert(moduleOrModulePromise instanceof ModuleWrap, `Expected ModuleWrap for loading ${url}`);
571577
}
572578

573-
if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
574-
const type = requestType === kRequireInImportedCJS ? 'require' : 'import';
575-
process.send({ [`watch:${type}`]: [url] });
576-
}
577-
578579
const { ModuleJob, ModuleJobSync } = require('internal/modules/esm/module_job');
579580
// TODO(joyeecheung): use ModuleJobSync for kRequireInImportedCJS too.
580581
const ModuleJobCtor = (requestType === kImportInRequiredESM ? ModuleJobSync : ModuleJob);

0 commit comments

Comments
 (0)