@@ -338,21 +338,28 @@ class Worker extends EventEmitter {
338338
339339 this [ kPublicPort ] = publicPortToParent ;
340340 ArrayPrototypeForEach ( [ 'message' , 'messageerror' ] , ( event ) => {
341- this [ kPublicPort ] . on ( event , ( message ) => this . emit ( event , message ) ) ;
341+ this [ kPublicPort ] . on ( event , ( message ) => {
342+ // Extract watch messages first if needed and relay events from worker thread to watcher
343+ if (
344+ event === 'message' &&
345+ process . env . WATCH_REPORT_DEPENDENCIES &&
346+ process . send
347+ ) {
348+ const { isMainThread } = internalBinding ( 'worker' ) ;
349+ if ( isMainThread ) {
350+ if ( ArrayIsArray ( message ?. [ 'watch:require' ] ) ) {
351+ process . send ( { 'watch:require' : message [ 'watch:require' ] } ) ;
352+ }
353+ if ( ArrayIsArray ( message ?. [ 'watch:import' ] ) ) {
354+ process . send ( { 'watch:import' : message [ 'watch:import' ] } ) ;
355+ }
356+ }
357+ }
358+ this . emit ( event , message ) ;
359+ } ) ;
342360 } ) ;
343361 setupPortReferencing ( this [ kPublicPort ] , this , 'message' ) ;
344362
345- // Relay events from worker thread to watcher
346- if ( process . env . WATCH_REPORT_DEPENDENCIES && process . send ) {
347- this [ kPublicPort ] . on ( 'message' , ( message ) => {
348- if ( ArrayIsArray ( message ?. [ 'watch:require' ] ) ) {
349- process . send ( { 'watch:require' : message [ 'watch:require' ] } ) ;
350- }
351- if ( ArrayIsArray ( message ?. [ 'watch:import' ] ) ) {
352- process . send ( { 'watch:import' : message [ 'watch:import' ] } ) ;
353- }
354- } ) ;
355- }
356363 this [ kPort ] . postMessage ( {
357364 argv,
358365 type : messageTypes . LOAD_SCRIPT ,
0 commit comments