@@ -58,6 +58,37 @@ const isCommonJSGlobalLikeNotDefinedError = (errorMessage) =>
5858 ( globalLike )  =>  errorMessage  ===  `${ globalLike }   is not defined` , 
5959 ) ; 
6060
61+ 
62+ /** 
63+  * 
64+  * @param  {Error } e 
65+  * @param  {string } url 
66+  * @returns  {void } 
67+  */ 
68+ const  explainCommonJSGlobalLikeNotDefinedError  =  ( e ,  url )  =>  { 
69+  if  ( e ?. name  ===  'ReferenceError'  && 
70+  isCommonJSGlobalLikeNotDefinedError ( e . message ) )  { 
71+  e . message  +=  ' in ES module scope' ; 
72+ 
73+  if  ( StringPrototypeStartsWith ( e . message ,  'require ' ) )  { 
74+  e . message  +=  ', you can use import instead' ; 
75+  } 
76+ 
77+  const  packageConfig  = 
78+  StringPrototypeStartsWith ( url ,  'file://' )  && 
79+  RegExpPrototypeExec ( / \. j s ( \? [ ^ # ] * ) ? ( # .* ) ? $ / ,  url )  !==  null  && 
80+  require ( 'internal/modules/package_json_reader' ) 
81+  . getPackageScopeConfig ( url ) ; 
82+  if  ( packageConfig . type  ===  'module' )  { 
83+  e . message  += 
84+  '\nThis file is being treated as an ES module because it has a '  + 
85+  `'.js' file extension and '${ packageConfig . pjsonPath }  ' contains `  + 
86+  '"type": "module". To treat it as a CommonJS script, rename it '  + 
87+  'to use the \'.cjs\' file extension.' ; 
88+  } 
89+  } 
90+ } ; 
91+ 
6192class  ModuleJobBase  { 
6293 constructor ( url ,  importAttributes ,  isMain ,  inspectBrk )  { 
6394 this . importAttributes  =  importAttributes ; 
@@ -273,27 +304,7 @@ class ModuleJob extends ModuleJobBase {
273304 try  { 
274305 await  this . module . evaluate ( timeout ,  breakOnSigint ) ; 
275306 }  catch  ( e )  { 
276-  if  ( e ?. name  ===  'ReferenceError'  && 
277-  isCommonJSGlobalLikeNotDefinedError ( e . message ) )  { 
278-  e . message  +=  ' in ES module scope' ; 
279- 
280-  if  ( StringPrototypeStartsWith ( e . message ,  'require ' ) )  { 
281-  e . message  +=  ', you can use import instead' ; 
282-  } 
283- 
284-  const  packageConfig  = 
285-  StringPrototypeStartsWith ( this . module . url ,  'file://' )  && 
286-  RegExpPrototypeExec ( / \. j s ( \? [ ^ # ] * ) ? ( # .* ) ? $ / ,  this . module . url )  !==  null  && 
287-  require ( 'internal/modules/package_json_reader' ) 
288-  . getPackageScopeConfig ( this . module . url ) ; 
289-  if  ( packageConfig . type  ===  'module' )  { 
290-  e . message  += 
291-  '\nThis file is being treated as an ES module because it has a '  + 
292-  `'.js' file extension and '${ packageConfig . pjsonPath }  ' contains `  + 
293-  '"type": "module". To treat it as a CommonJS script, rename it '  + 
294-  'to use the \'.cjs\' file extension.' ; 
295-  } 
296-  } 
307+  explainCommonJSGlobalLikeNotDefinedError ( e ,  this . module . url ) ; 
297308 throw  e ; 
298309 } 
299310 return  {  __proto__ : null ,  module : this . module  } ; 
@@ -397,8 +408,13 @@ class ModuleJobSync extends ModuleJobBase {
397408 throw  new  ERR_REQUIRE_ASYNC_MODULE ( filename ,  parentFilename ) ; 
398409 } 
399410 setHasStartedUserESMExecution ( ) ; 
400-  const  namespace  =  this . module . evaluateSync ( filename ,  parentFilename ) ; 
401-  return  {  __proto__ : null ,  module : this . module ,  namespace } ; 
411+  try  { 
412+  const  namespace  =  this . module . evaluateSync ( filename ,  parentFilename ) ; 
413+  return  {  __proto__ : null ,  module : this . module ,  namespace } ; 
414+  }  catch  ( e )  { 
415+  explainCommonJSGlobalLikeNotDefinedError ( e ,  this . module . url ) ; 
416+  throw  e ; 
417+  } 
402418 } 
403419} 
404420
0 commit comments