Bugfix: update stale HMR after fixed errors
This commit is contained in:
@@ -8,8 +8,8 @@ export default async function buildOnstartErrorHandler(params?: Params) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Killing Bundler ...`);
|
||||
console.log(`global.BUNDLER_CTX_DISPOSED`, global.BUNDLER_CTX_DISPOSED);
|
||||
// console.log(`Killing Bundler ...`);
|
||||
// console.log(`global.BUNDLER_CTX_DISPOSED`, global.BUNDLER_CTX_DISPOSED);
|
||||
|
||||
global.BUNDLER_CTX_DISPOSED = true;
|
||||
|
||||
|
||||
@@ -97,20 +97,11 @@ export default function esbuildCTXArtifactTracker({
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
await post_build_fn?.({ artifacts });
|
||||
} catch (error) {
|
||||
log.error(`Post-build Error: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
const elapsed = (performance.now() - build_start).toFixed(0);
|
||||
log.success(`[Built] in ${elapsed}ms`);
|
||||
|
||||
global.RECOMPILING = false;
|
||||
global.IS_SERVER_COMPONENT = false;
|
||||
|
||||
global.MAIN_CTX_BUILD_STARTS = 0;
|
||||
global.BUNDLER_CTX_DISPOSED = false;
|
||||
|
||||
@@ -118,6 +109,7 @@ export default function esbuildCTXArtifactTracker({
|
||||
BUNX_BUNDLER_ERROR_EXIT_FILE,
|
||||
);
|
||||
|
||||
// SSR must finish before HMR so server props are fresh
|
||||
if (build_only) {
|
||||
try {
|
||||
await pagesSSRBundler();
|
||||
@@ -139,13 +131,18 @@ export default function esbuildCTXArtifactTracker({
|
||||
} catch (error) {
|
||||
log.error(`SSR Bundler Error: ${error}`);
|
||||
}
|
||||
|
||||
if (artifacts?.[0] && artifacts.length > 0) {
|
||||
try {
|
||||
await post_build_fn?.({ artifacts });
|
||||
} catch (error) {
|
||||
log.error(`Post-build Error: ${error}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (global.SSR_BUNDLER_CTX) {
|
||||
// global.SSR_BUNDLER_CTX.rebuild();
|
||||
// } else {
|
||||
// pagesSSRContextBundler();
|
||||
// }
|
||||
global.RECOMPILING = false;
|
||||
global.IS_SERVER_COMPONENT = false;
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
@@ -98,8 +98,8 @@ export default async function bunextInit(params?: Params) {
|
||||
} else if (is_dev) {
|
||||
log.build(`Building Modules ...`);
|
||||
await allPagesESBuildContextBundler({
|
||||
post_build_fn: () => {
|
||||
serverPostBuildFn();
|
||||
post_build_fn: async () => {
|
||||
await serverPostBuildFn();
|
||||
},
|
||||
});
|
||||
watcherEsbuildCTX();
|
||||
|
||||
@@ -24,8 +24,8 @@ export default async function fullRebuild(params?: { msg?: string }) {
|
||||
} catch (error) {}
|
||||
|
||||
await allPagesESBuildContextBundler({
|
||||
post_build_fn: () => {
|
||||
serverPostBuildFn();
|
||||
post_build_fn: async () => {
|
||||
await serverPostBuildFn();
|
||||
},
|
||||
});
|
||||
} catch (error: any) {
|
||||
|
||||
@@ -57,19 +57,18 @@ export default async function serverPostBuildFn(params?: Params) {
|
||||
? new Request(target_artifact.req_url)
|
||||
: new Request(controller.page_url);
|
||||
|
||||
const page_component = global.IS_SERVER_COMPONENT
|
||||
? await grabPageComponent({
|
||||
req: mock_req,
|
||||
return_server_res_only: true,
|
||||
is_hydration: true,
|
||||
})
|
||||
: {};
|
||||
// Always re-run server fns so fixed errors clear on the first HMR
|
||||
const page_component = await grabPageComponent({
|
||||
req: mock_req,
|
||||
return_server_res_only: true,
|
||||
is_hydration: true,
|
||||
});
|
||||
|
||||
if (page_component instanceof Response) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const { serverRes } = page_component;
|
||||
const { serverRes } = page_component || {};
|
||||
|
||||
const final_artifact: Omit<GlobalHMRControllerObject, "controller"> = {
|
||||
..._.omit(controller, ["controller"]),
|
||||
@@ -80,9 +79,8 @@ export default async function serverPostBuildFn(params?: Params) {
|
||||
delete final_artifact.target_map;
|
||||
}
|
||||
|
||||
if (serverRes) {
|
||||
final_artifact.page_props = serverRes;
|
||||
}
|
||||
// Always replace so prior error props cannot linger
|
||||
final_artifact.page_props = serverRes || {};
|
||||
|
||||
try {
|
||||
let final_data: { [k: string]: any } = {};
|
||||
|
||||
@@ -20,9 +20,12 @@ export default async function grabPageBundledReactComponent({
|
||||
}: Params): Promise<GrabPageReactBundledComponentRes | undefined> {
|
||||
try {
|
||||
if (global.SSR_BUNDLER_CTX_MAP?.[file_path]) {
|
||||
const mod = await import(
|
||||
path.join(ROOT_DIR, global.SSR_BUNDLER_CTX_MAP[file_path].path)
|
||||
const abs = path.join(
|
||||
ROOT_DIR,
|
||||
global.SSR_BUNDLER_CTX_MAP[file_path].path,
|
||||
);
|
||||
Loader.registry.delete(abs);
|
||||
const mod = await import(`${abs}?t=${Date.now()}`);
|
||||
|
||||
const Main = mod.default as FC;
|
||||
|
||||
|
||||
@@ -40,6 +40,9 @@ export default async function grabPageCombinedServerRes({
|
||||
? path.join(ROOT_DIR, root_server_ctx_map.path)
|
||||
: root_server_file_path;
|
||||
|
||||
if (final_root_server_path) {
|
||||
Loader.registry.delete(final_root_server_path);
|
||||
}
|
||||
const root_server_module: BunextPageServerModule = final_root_server_path
|
||||
? await import(`${final_root_server_path}?t=${now}`)
|
||||
: undefined;
|
||||
@@ -65,6 +68,9 @@ export default async function grabPageCombinedServerRes({
|
||||
? path.join(ROOT_DIR, page_server_ctx.path)
|
||||
: server_file_path;
|
||||
|
||||
if (final_page_server_path) {
|
||||
Loader.registry.delete(final_page_server_path);
|
||||
}
|
||||
const server_module: BunextPageServerModule = final_page_server_path
|
||||
? await import(`${final_page_server_path}?t=${now}`)
|
||||
: undefined;
|
||||
|
||||
Reference in New Issue
Block a user