fix: cjs external facade (#359)
Fixes Vite CJS external facade plugin transformation of require to import.
ccd51b54c058Fixes Vite CJS external facade plugin transformation of require to import.
packages/react-server/lib/dev/create-server.mjs+2 -0| 45 | 45 | import jsonNamedExports from "../plugins/json-named-exports.mjs"; | |
| 46 | 46 | import reactServerLive from "../plugins/live.mjs"; | |
| 47 | 47 | import optimizeDeps from "../plugins/optimize-deps.mjs"; | |
| 48 | + | import fixCjsExternalFacade from "../plugins/fix-cjs-external-facade.mjs"; | |
| 48 | 49 | import reactServerEval from "../plugins/react-server-eval.mjs"; | |
| 49 | 50 | import reactServerRuntime from "../plugins/react-server-runtime.mjs"; | |
| 50 | 51 | import resolveWorkspace from "../plugins/resolve-workspace.mjs"; |
packages/react-server/lib/plugins/fix-cjs-external-facade.mjs+18 -0| 270 | 271 | ...filterOutVitePluginReact(config.plugins), | |
| 271 | 272 | asset(), | |
| 272 | 273 | optimizeDeps(), | |
| 274 | + | fixCjsExternalFacade(), | |
| 273 | 275 | reactServerLive(options.httpServer, config), | |
| 274 | 276 | ...(telemetryConfig ? [telemetryHooks()] : []), | |
| 275 | 277 | ], |
| 1 | + | export default function fixCjsExternalFacade() { | |
| 2 | + | return { | |
| 3 | + | name: "react-server:fix-react-dom-cjs-facade", | |
| 4 | + | enforce: "pre", | |
| 5 | + | transform(code, id) { | |
| 6 | + | try { | |
| 7 | + | if (id.includes("vite_cjs-external-facade")) { | |
| 8 | + | return code.replace( | |
| 9 | + | "module.exports = { ...m }", | |
| 10 | + | "module.exports = m.default ?? m" | |
| 11 | + | ); | |
| 12 | + | } | |
| 13 | + | } catch { | |
| 14 | + | // Ignore any errors during transformation to avoid breaking the build | |
| 15 | + | } | |
| 16 | + | }, | |
| 17 | + | }; | |
| 18 | + | } |