From f2aba7a89c7a3317dd4da203606e8e0ba0357c41 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Mon, 20 Mar 2023 11:33:00 -0400 Subject: [PATCH] Fix Rollup v3 build issues --- .../react-server-dom-webpack/package.json | 2 +- scripts/rollup/build.js | 29 +++++++++++++++++-- scripts/rollup/bundles.js | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/packages/react-server-dom-webpack/package.json b/packages/react-server-dom-webpack/package.json index 3f09719bb06e7..f32d8cdeefd7d 100644 --- a/packages/react-server-dom-webpack/package.json +++ b/packages/react-server-dom-webpack/package.json @@ -66,7 +66,7 @@ "./server.node.unbundled": "./server.node.unbundled.js", "./node-loader": "./esm/react-server-dom-webpack-node-loader.production.min.js", "./node-register": "./node-register.js", - "./src/*": "./src/*", + "./src/*": "./src/*.js", "./package.json": "./package.json" }, "main": "index.js", diff --git a/scripts/rollup/build.js b/scripts/rollup/build.js index a8de88db5c412..15295a11b9ec9 100644 --- a/scripts/rollup/build.js +++ b/scripts/rollup/build.js @@ -173,6 +173,31 @@ function getBabelConfig( return options; } +let getRollupInteropValue = id => { + // ReactNoop.js and ReactNoopPersistent.js use several default imports from other internal packages. + // That gets turned into a `require()`, but the `module.exports = function reconciler()` wrapper + // gets added later, so Rollup isn't fully aware of it, and tries to use `RFR.default` instead. + // Force Rollup to use the `require()`'d value directly, without adding a `.default`. + // Other cases: + // - `react-art` needs to deal with imports from the `art` package + // -`error-stack-parser` + const exactModuleNames = [ + 'react-reconciler', + 'react-server/flight', + 'react-client/flight', + 'react-server', + 'JSResourceReferenceImpl', + 'error-stack-parser', + ]; + + if (exactModuleNames.includes(id) || id.startsWith('art/')) { + return 'default'; + } + + // For all other modules, handle imports without any import helper utils + return 'esModule'; +}; + function getRollupOutputOptions( outputPath, format, @@ -187,7 +212,7 @@ function getRollupOutputOptions( format, globals, freeze: !isProduction, - interop: false, + interop: getRollupInteropValue, name: globalName, sourcemap: false, esModule: false, @@ -612,7 +637,7 @@ async function createBundle(bundle, bundleType) { output: { externalLiveBindings: false, freeze: false, - interop: false, + interop: getRollupInteropValue, esModule: false, }, }; diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index e4ff1cf8bf0f7..f29fe5e17a433 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -442,7 +442,7 @@ const bundles = [ { bundleTypes: [NODE_ES2015], moduleType: RENDERER_UTILS, - entry: 'react-server-dom-webpack/src/ReactFlightWebpackNodeRegister.js', + entry: 'react-server-dom-webpack/src/ReactFlightWebpackNodeRegister', name: 'react-server-dom-webpack-node-register', global: 'ReactFlightWebpackNodeRegister', minifyWithProdErrorCodes: false,