Skip to content

Commit fe09eab

Browse files
authored
fix(dev): handle rebuilds that start before previous one finished (#6155)
1 parent 225916b commit fe09eab

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

integration/hmr-test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,16 +231,16 @@ test("HMR", async ({ page }) => {
231231
let dev = execa("npm", ["run", "dev"], { cwd: projectDir });
232232
let devStdout = bufferize(dev.stdout!);
233233
let devStderr = bufferize(dev.stderr!);
234-
await wait(
235-
() => {
236-
let stderr = devStderr();
237-
if (stderr.length > 0) throw Error(stderr);
238-
return / app ready: /.test(devStdout());
239-
},
240-
{ timeoutMs: 10_000 }
241-
);
242-
243234
try {
235+
await wait(
236+
() => {
237+
let stderr = devStderr();
238+
if (stderr.length > 0) throw Error(stderr);
239+
return / app ready: /.test(devStdout());
240+
},
241+
{ timeoutMs: 10_000 }
242+
);
243+
244244
await page.goto(`http://localhost:${appServerPort}`, {
245245
waitUntil: "networkidle",
246246
});

packages/remix-dev/devServer_unstable/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export let serve = async (
6363
}
6464
},
6565
onRebuildStart: () => {
66+
state.buildHashChannel?.err();
6667
clean(config);
6768
websocket.log("Rebuilding...");
6869
},
@@ -81,7 +82,9 @@ export let serve = async (
8182
state.appServer = startAppServer(options.command);
8283
}
8384
}
84-
await state.buildHashChannel.result;
85+
let { ok } = await state.buildHashChannel.result;
86+
// result not ok -> new build started before this one finished. do not process outdated manifest
87+
if (!ok) return;
8588

8689
if (manifest.hmr && state.prevManifest) {
8790
let updates = HMR.updates(config, manifest, state.prevManifest);

0 commit comments

Comments
 (0)