1export async function tryRequireThenImport<TModule>(moduleId: string): Promise<TModule> { 2 try { 3 return require(moduleId); 4 } catch (requireError: any) { 5 let importESM; 6 try { 7 // eslint-disable-next-line no-new-func 8 importESM = new Function('id', 'return import(id);'); 9 } catch { 10 importESM = null; 11 } 12 13 if (requireError?.code === 'ERR_REQUIRE_ESM' && importESM) { 14 return (await importESM(moduleId)).default; 15 } 16 17 throw requireError; 18 } 19} 20 21export function requireUncachedFile(moduleId: string) { 22 try { 23 // delete require.cache[require.resolve(moduleId)]; 24 } catch {} 25 try { 26 return require(moduleId); 27 } catch (error: unknown) { 28 if (error instanceof Error) { 29 error.message = `Cannot load file ${moduleId}: ${error.message}`; 30 } 31 throw error; 32 } 33} 34