From 70db994a614628fd0899ff7b62e7a4e4747ab3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 7 Jan 2022 00:16:45 +0100 Subject: [PATCH] Better fix for old Node --- .../src/config/files/import-meta-resolve.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/babel-core/src/config/files/import-meta-resolve.ts b/packages/babel-core/src/config/files/import-meta-resolve.ts index 787d9a211647..a02ad0c94e51 100644 --- a/packages/babel-core/src/config/files/import-meta-resolve.ts +++ b/packages/babel-core/src/config/files/import-meta-resolve.ts @@ -7,18 +7,22 @@ let import_; try { // Node < 13.3 doesn't support import() syntax. import_ = require("./import").default; -} catch {} +} catch { + import_ = () => Promise.resolve({}); +} -// import.meta.resolve is only available in ESM, but this file is compiled to CJS. -// We can extract ir using dynamic import. -const resolveP = - import_ && import_("data:text/javascript,export default import.meta.resolve"); +let resolveP; export default async function getImportMetaResolve(): Promise< ImportMeta["resolve"] > { + // import.meta.resolve is only available in ESM, but this file is compiled to CJS. + // We can extract it using dynamic import. + resolveP ??= import_( + "data:text/javascript,export default import.meta.resolve", + ); // Since import.meta.resolve is unstable and only available when // using the --experimental-import-meta-resolve flag, we almost // always use the polyfill for now. - return (resolveP && (await resolveP).default) || polyfill; + return (await resolveP).default || polyfill; }