diff --git a/packages/metro-file-map/src/plugins/DependencyPlugin.js b/packages/metro-file-map/src/plugins/DependencyPlugin.js index 7ad2b57e22..596ac883c9 100644 --- a/packages/metro-file-map/src/plugins/DependencyPlugin.js +++ b/packages/metro-file-map/src/plugins/DependencyPlugin.js @@ -76,7 +76,9 @@ export default class DependencyPlugin if (this.#dependencyExtractor != null) { // Dynamic require to get extractor's cache key // $FlowFixMe[unsupported-syntax] - dynamic require - const extractor = require(this.#dependencyExtractor); + const mod = require(this.#dependencyExtractor); + const extractor = + mod.__esModule === true && 'default' in mod ? mod.default : mod; return JSON.stringify({ extractorKey: extractor.getCacheKey?.() ?? null, extractorPath: this.#dependencyExtractor, diff --git a/packages/metro-file-map/src/plugins/dependencies/worker.js b/packages/metro-file-map/src/plugins/dependencies/worker.js index afba95d860..f34238dd4b 100644 --- a/packages/metro-file-map/src/plugins/dependencies/worker.js +++ b/packages/metro-file-map/src/plugins/dependencies/worker.js @@ -27,7 +27,9 @@ module.exports = class DependencyExtractorWorker /*:: implements MetadataWorker ) { if (dependencyExtractor != null) { // $FlowFixMe[unsupported-syntax] - dynamic require - this.#dependencyExtractor = require(dependencyExtractor); + const mod = require(dependencyExtractor); + this.#dependencyExtractor = + mod.__esModule === true && 'default' in mod ? mod.default : mod; } } diff --git a/packages/metro-file-map/src/plugins/haste/worker.js b/packages/metro-file-map/src/plugins/haste/worker.js index c6c14806d4..80e01886f9 100644 --- a/packages/metro-file-map/src/plugins/haste/worker.js +++ b/packages/metro-file-map/src/plugins/haste/worker.js @@ -30,7 +30,9 @@ module.exports = class Worker /*:: implements MetadataWorker */ { ) { if (hasteImplModulePath != null) { // $FlowFixMe[unsupported-syntax] - dynamic require - this.#hasteImpl = require(hasteImplModulePath); + const mod = require(hasteImplModulePath); + this.#hasteImpl = + mod.__esModule === true && 'default' in mod ? mod.default : mod; } } diff --git a/packages/metro-file-map/src/worker.js b/packages/metro-file-map/src/worker.js index 92a20908e7..a76b00a8f6 100644 --- a/packages/metro-file-map/src/worker.js +++ b/packages/metro-file-map/src/worker.js @@ -36,7 +36,9 @@ class Worker { constructor({plugins = []} /*: WorkerSetupArgs */) { this.#plugins = plugins.map(({modulePath, setupArgs}) => { // $FlowFixMe[unsupported-syntax] - dynamic require - const PluginWorker = require(modulePath); + const mod = require(modulePath); + const PluginWorker = + mod.__esModule === true && 'default' in mod ? mod.default : mod; return new PluginWorker(setupArgs); }); } diff --git a/packages/metro-transform-worker/src/index.js b/packages/metro-transform-worker/src/index.js index 033a194a94..e6fb462232 100644 --- a/packages/metro-transform-worker/src/index.js +++ b/packages/metro-transform-worker/src/index.js @@ -542,7 +542,9 @@ async function transformJSWithBabel( ): Promise { const {babelTransformerPath} = context.config; // $FlowFixMe[unsupported-syntax] dynamic require - const transformer: BabelTransformer = require(babelTransformerPath); + const mod = require(babelTransformerPath); + const transformer: BabelTransformer = + mod.__esModule === true && 'default' in mod ? mod.default : mod; const transformResult = await transformer.transform( getBabelTransformArgs(file, context, [ diff --git a/packages/metro-transform-worker/src/utils/getMinifier.js b/packages/metro-transform-worker/src/utils/getMinifier.js index be0cdf44c3..1d2b2de6f9 100644 --- a/packages/metro-transform-worker/src/utils/getMinifier.js +++ b/packages/metro-transform-worker/src/utils/getMinifier.js @@ -17,7 +17,8 @@ export default function getMinifier(minifierPath: string): Minifier { // any entry point that accepts them... try { // $FlowFixMe[unsupported-syntax] TODO t0 cannot do require with literal - return require(minifierPath); + const mod = require(minifierPath); + return mod.__esModule === true && 'default' in mod ? mod.default : mod; } catch (e) { throw new Error( 'A problem occurred while trying to fetch the minifier. Path: "' + diff --git a/packages/metro/src/Assets.js b/packages/metro/src/Assets.js index b2759ad59b..68a5752b9c 100644 --- a/packages/metro/src/Assets.js +++ b/packages/metro/src/Assets.js @@ -249,7 +249,10 @@ async function applyAssetDataPlugins( const [currentAssetPlugin, ...remainingAssetPlugins] = assetDataPlugins; // $FlowFixMe[unsupported-syntax]: impossible to type a dynamic require. - const assetPluginFunction: AssetDataPlugin = require(currentAssetPlugin); + const mod = require(currentAssetPlugin); + const assetPluginFunction: AssetDataPlugin = + mod.__esModule === true && 'default' in mod ? mod.default : mod; + const resultAssetData = await assetPluginFunction(assetData); return await applyAssetDataPlugins(remainingAssetPlugins, resultAssetData); }