Fix react and react-dom peer dependencies mismatch #3

This commit is contained in:
2026-04-05 17:58:52 +01:00
parent f49a17b24e
commit d441f9982e
12 changed files with 21 additions and 66 deletions
+2 -5
View File
@@ -1,11 +1,8 @@
import { existsSync } from "fs";
import path from "path";
import grabDirNames from "../../utils/grab-dir-names";
import AppNames from "../../utils/grab-app-names";
import grabConstants from "../../utils/grab-constants";
import pagePathTransform from "../../utils/page-path-transform";
import grabRootFilePath from "../server/web-pages/grab-root-file-path";
const { PAGES_DIR } = grabDirNames();
const { ROOT_DIR } = grabDirNames();
export default async function grabClientHydrationScript({ page_local_path, }) {
const { ClientRootElementIDName, ClientRootComponentWindowName, ClientWindowPagePropsName, } = grabConstants();
const { root_file_path } = grabRootFilePath();
@@ -30,7 +27,7 @@ export default async function grabClientHydrationScript({ page_local_path, }) {
return undefined;
}
let txt = ``;
txt += `import { hydrateRoot } from "react-dom/client";\n`;
txt += `import { hydrateRoot } from "${ROOT_DIR}/node_modules/react-dom/client.js";\n`;
if (root_file_path) {
txt += `import Root from "${root_file_path}";\n`;
}
+1 -3
View File
@@ -1,5 +1,4 @@
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
import { renderToReadableStream, renderToString } from "react-dom/server";
import grabContants from "../../../utils/grab-constants";
import EJSON from "../../../utils/ejson";
import isDevelopment from "../../../utils/is-development";
@@ -10,8 +9,6 @@ import { AppData } from "../../../data/app-data";
import { readFileSync } from "fs";
import path from "path";
import _ from "lodash";
import grabDirNames from "../../../utils/grab-dir-names";
const {} = grabDirNames();
let _reactVersion = "19";
try {
_reactVersion = JSON.parse(readFileSync(path.join(process.cwd(), "node_modules/react/package.json"), "utf-8")).version;
@@ -19,6 +16,7 @@ try {
catch { }
export default async function genWebHTML({ component, pageProps, bundledMap, module, routeParams, debug, root_module, }) {
const { ClientRootElementIDName, ClientWindowPagePropsName } = grabContants();
const { renderToReadableStream } = await import(`${global.DIR_NAMES.ROOT_DIR}/node_modules/react-dom/server.js`);
const is_dev = isDevelopment();
if (debug) {
log.info("component", component);
+3 -4
View File
@@ -1,5 +1,4 @@
import type { BunextPageModule, BunextPageModuleServerReturn, BunxRouteParams } from "../../../types";
import type { JSX } from "react";
import type { BunextPageModule, BunxRouteParams } from "../../../types";
type Params = {
file_path: string;
debug?: boolean;
@@ -8,8 +7,8 @@ type Params = {
routeParams?: BunxRouteParams;
};
export default function grabPageModules({ file_path, debug, url, query, routeParams, }: Params): Promise<{
component: JSX.Element;
serverRes: BunextPageModuleServerReturn;
component: import("react").JSX.Element;
serverRes: import("../../../types").BunextPageModuleServerReturn;
module: BunextPageModule;
root_module: BunextPageModule | undefined;
}>;
-2
View File
@@ -2,8 +2,6 @@ import grabPageBundledReactComponent from "./grab-page-bundled-react-component";
import _ from "lodash";
import { log } from "../../../utils/log";
import grabRootFilePath from "./grab-root-file-path";
import grabPageServerRes from "./grab-page-server-res";
import grabPageServerPath from "./grab-page-server-path";
import grabPageCombinedServerRes from "./grab-page-combined-server-res";
export default async function grabPageModules({ file_path, debug, url, query, routeParams, }) {
const now = Date.now();
-1
View File
@@ -1 +0,0 @@
export default function importReactDomServer(): Promise<any>;
-14
View File
@@ -1,14 +0,0 @@
import path from "path";
import reactDomServer from "react-dom/server";
export default async function importReactDomServer() {
try {
const reactDomServerDynamicImport = await import(path.join(process.cwd(), "node_modules", "react-dom", "server"));
if (!reactDomServerDynamicImport.renderToString) {
return reactDomServer;
}
return reactDomServerDynamicImport;
}
catch (error) {
return reactDomServer;
}
}