From 64f38c4b0ba4b969dcd12983fea3a9a1b64962ac Mon Sep 17 00:00:00 2001 From: OJ Kwon <1210596+kwonoj@users.noreply.github.com> Date: Tue, 14 May 2024 14:44:10 -0700 Subject: [PATCH] fix(next): add alias to new react exports (#65761) ### What There is a new react exports entrypoints in pkg.json, which we didn't add alias as similar to other export conditions. --- packages/next-swc/crates/next-core/src/next_import_map.rs | 5 +++++ packages/next/src/build/create-compiler-aliases.ts | 4 ++++ .../route-modules/app-page/vendored/rsc/entrypoints.ts | 3 +++ .../app-page/vendored/rsc/react-compiler-runtime.ts | 3 +++ .../route-modules/app-page/vendored/ssr/entrypoints.ts | 3 +++ .../app-page/vendored/ssr/react-compiler-runtime.ts | 3 +++ packages/next/webpack.config.js | 4 ++++ 7 files changed, 25 insertions(+) create mode 100644 packages/next/src/server/future/route-modules/app-page/vendored/rsc/react-compiler-runtime.ts create mode 100644 packages/next/src/server/future/route-modules/app-page/vendored/ssr/react-compiler-runtime.ts diff --git a/packages/next-swc/crates/next-core/src/next_import_map.rs b/packages/next-swc/crates/next-core/src/next_import_map.rs index cda1515bf86e5..27772d6127490 100644 --- a/packages/next-swc/crates/next-core/src/next_import_map.rs +++ b/packages/next-swc/crates/next-core/src/next_import_map.rs @@ -664,6 +664,7 @@ async fn rsc_aliases( "react-dom" => format!("next/dist/compiled/react-dom{react_channel}"), "react/jsx-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-runtime"), "react/jsx-dev-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-dev-runtime"), + "react/compiler-runtime" => format!("next/dist/compiled/react{react_channel}/compiler-runtime"), "react-dom/client" => format!("next/dist/compiled/react-dom{react_channel}/client"), "react-dom/static" => format!("next/dist/compiled/react-dom-experimental/static"), "react-dom/static.edge" => format!("next/dist/compiled/react-dom-experimental/static.edge"), @@ -687,6 +688,7 @@ async fn rsc_aliases( alias.extend(indexmap! { "react/jsx-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime"), "react/jsx-dev-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime"), + "react/compiler-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react-compiler-runtime"), "react" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react"), "react-dom" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react-dom"), "react-server-dom-webpack/client.edge" => format!("next/dist/server/future/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client-edge"), @@ -697,6 +699,7 @@ async fn rsc_aliases( alias.extend(indexmap! { "react/jsx-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-runtime"), "react/jsx-dev-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime"), + "react/compiler-runtime" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react-compiler-runtime"), "react" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react"), "react-dom" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react-dom"), "react-server-dom-webpack/server.edge" => format!("next/dist/server/future/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server-edge"), @@ -719,8 +722,10 @@ async fn rsc_aliases( "next/dist/compiled/react" => format!("next/dist/compiled/react{react_channel}/react.react-server"), "next/dist/compiled/react-experimental" => format!("next/dist/compiled/react-experimental/react.react-server"), "react/jsx-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-runtime.react-server"), + "react/compiler-runtime" => format!("next/dist/compiled/react{react_channel}/compiler-runtime"), "next/dist/compiled/react/jsx-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-runtime.react-server"), "next/dist/compiled/react-experimental/jsx-runtime" => format!("next/dist/compiled/react-experimental/jsx-runtime.react-server"), + "next/dist/compiled/react/compiler-runtime" => format!("next/dist/compiled/react{react_channel}/compiler-runtime"), "react/jsx-dev-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-dev-runtime.react-server"), "next/dist/compiled/react/jsx-dev-runtime" => format!("next/dist/compiled/react{react_channel}/jsx-dev-runtime.react-server"), "next/dist/compiled/react-experimental/jsx-dev-runtime" => format!("next/dist/compiled/react-experimental/jsx-dev-runtime.react-server"), diff --git a/packages/next/src/build/create-compiler-aliases.ts b/packages/next/src/build/create-compiler-aliases.ts index 37da16736475d..283041e286189 100644 --- a/packages/next/src/build/create-compiler-aliases.ts +++ b/packages/next/src/build/create-compiler-aliases.ts @@ -252,6 +252,7 @@ export function createRSCAliases( 'react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}`, 'react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime`, + 'react/compiler-runtime$': `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, 'react-dom/client$': `next/dist/compiled/react-dom${bundledReactChannel}/client`, 'react-dom/server$': `next/dist/compiled/react-dom${bundledReactChannel}/server`, 'react-dom/static$': `next/dist/compiled/react-dom-experimental/static`, @@ -272,6 +273,7 @@ export function createRSCAliases( alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-jsx-dev-runtime`, + 'react/compiler-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-compiler-runtime`, react$: `next/dist/server/future/route-modules/app-page/vendored/${layer}/react`, 'react-dom$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-dom`, 'react-server-dom-webpack/client.edge$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-client-edge`, @@ -280,6 +282,7 @@ export function createRSCAliases( alias = Object.assign(alias, { 'react/jsx-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-jsx-dev-runtime`, + 'react/compiler-runtime$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-compiler-runtime`, react$: `next/dist/server/future/route-modules/app-page/vendored/${layer}/react`, 'react-dom$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-dom`, 'react-server-dom-webpack/server.edge$': `next/dist/server/future/route-modules/app-page/vendored/${layer}/react-server-dom-webpack-server-edge`, @@ -295,6 +298,7 @@ export function createRSCAliases( 'next/dist/compiled/react$': `next/dist/compiled/react${bundledReactChannel}/react.react-server`, 'next/dist/compiled/react-experimental$': `next/dist/compiled/react-experimental/react.react-server`, 'react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime.react-server`, + 'react/compiler-runtime$': `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, 'next/dist/compiled/react/jsx-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-runtime.react-server`, 'next/dist/compiled/react-experimental/jsx-runtime$': `next/dist/compiled/react-experimental/jsx-runtime.react-server`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`, diff --git a/packages/next/src/server/future/route-modules/app-page/vendored/rsc/entrypoints.ts b/packages/next/src/server/future/route-modules/app-page/vendored/rsc/entrypoints.ts index 86d52f959134c..fd924652f4ab4 100644 --- a/packages/next/src/server/future/route-modules/app-page/vendored/rsc/entrypoints.ts +++ b/packages/next/src/server/future/route-modules/app-page/vendored/rsc/entrypoints.ts @@ -2,6 +2,8 @@ import * as React from 'react' import * as ReactDOM from 'react-dom' import * as ReactJsxDevRuntime from 'react/jsx-dev-runtime' import * as ReactJsxRuntime from 'react/jsx-runtime' +//@ts-expect-error TODO: current @types/react does not have exported types for this import +import * as ReactCompilerRuntime from 'react/compiler-runtime' import '../../../../../next-fetch' function getAltProxyForBindingsDEV( @@ -80,6 +82,7 @@ export { React, ReactJsxDevRuntime, ReactJsxRuntime, + ReactCompilerRuntime, ReactDOM, ReactServerDOMWebpackServerEdge, ReactServerDOMTurbopackServerEdge, diff --git a/packages/next/src/server/future/route-modules/app-page/vendored/rsc/react-compiler-runtime.ts b/packages/next/src/server/future/route-modules/app-page/vendored/rsc/react-compiler-runtime.ts new file mode 100644 index 0000000000000..ae4c2578749be --- /dev/null +++ b/packages/next/src/server/future/route-modules/app-page/vendored/rsc/react-compiler-runtime.ts @@ -0,0 +1,3 @@ +module.exports = require('../../module.compiled').vendored[ + 'react-rsc' +].ReactCompilerRuntime diff --git a/packages/next/src/server/future/route-modules/app-page/vendored/ssr/entrypoints.ts b/packages/next/src/server/future/route-modules/app-page/vendored/ssr/entrypoints.ts index 4064bf693e272..b295d2d26257a 100644 --- a/packages/next/src/server/future/route-modules/app-page/vendored/ssr/entrypoints.ts +++ b/packages/next/src/server/future/route-modules/app-page/vendored/ssr/entrypoints.ts @@ -2,6 +2,8 @@ import * as React from 'react' import * as ReactDOM from 'react-dom' import * as ReactJsxDevRuntime from 'react/jsx-dev-runtime' import * as ReactJsxRuntime from 'react/jsx-runtime' +//@ts-expect-error TODO: current @types/react does not have exported types for this import +import * as ReactCompilerRuntime from 'react/compiler-runtime' // eslint-disable-next-line import/no-extraneous-dependencies import * as ReactDOMServerEdge from 'react-dom/server.edge' @@ -54,6 +56,7 @@ export { React, ReactJsxDevRuntime, ReactJsxRuntime, + ReactCompilerRuntime, ReactDOM, ReactDOMServerEdge, ReactServerDOMTurbopackClientEdge, diff --git a/packages/next/src/server/future/route-modules/app-page/vendored/ssr/react-compiler-runtime.ts b/packages/next/src/server/future/route-modules/app-page/vendored/ssr/react-compiler-runtime.ts new file mode 100644 index 0000000000000..d5da126095e00 --- /dev/null +++ b/packages/next/src/server/future/route-modules/app-page/vendored/ssr/react-compiler-runtime.ts @@ -0,0 +1,3 @@ +module.exports = require('../../module.compiled').vendored[ + 'react-ssr' +].ReactCompilerRuntime diff --git a/packages/next/webpack.config.js b/packages/next/webpack.config.js index ba7f5b0417c82..b37c6dda37aa8 100644 --- a/packages/next/webpack.config.js +++ b/packages/next/webpack.config.js @@ -8,6 +8,7 @@ const pagesExternals = [ 'react/package.json', 'react/jsx-runtime', 'react/jsx-dev-runtime', + 'react/compiler-runtime', 'react-dom', 'react-dom/package.json', 'react-dom/client', @@ -36,6 +37,7 @@ function makeAppAliases(reactChannel = '') { 'react-dom$': `next/dist/compiled/react-dom${reactChannel}`, 'react/jsx-runtime$': `next/dist/compiled/react${reactChannel}/jsx-runtime`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${reactChannel}/jsx-dev-runtime`, + 'react/compiler-runtime$': `next/dist/compiled/react${reactChannel}/compiler-runtime`, 'react-dom/client$': `next/dist/compiled/react-dom${reactChannel}/client`, 'react-dom/server$': `next/dist/compiled/react-dom${reactChannel}/server`, 'react-dom/static$': `next/dist/compiled/react-dom-experimental/static`, @@ -241,6 +243,8 @@ module.exports = ({ dev, turbo, bundleType, experimental }) => { [`next/dist/compiled/react${bundledReactChannel}/jsx-runtime$`]: `next/dist/compiled/react${bundledReactChannel}/jsx-runtime.react-server`, 'react/jsx-dev-runtime$': `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`, [`next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime$`]: `next/dist/compiled/react${bundledReactChannel}/jsx-dev-runtime.react-server`, + 'react/compiler-runtime$': `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, + [`next/dist/compiled/react${bundledReactChannel}/compiler-runtime$`]: `next/dist/compiled/react${bundledReactChannel}/compiler-runtime`, 'react-dom$': `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`, [`next/dist/compiled/react-dom${bundledReactChannel}$`]: `next/dist/compiled/react-dom${bundledReactChannel}/react-dom.react-server`, },