Skip to content

Commit b2a3a82

Browse files
committed
fix(dev): ignore Nitro proxy resets
1 parent 2bee180 commit b2a3a82

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

app/vite.config.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,11 @@ function serveIconsDev() {
9090
};
9191
}
9292

93-
/** Nitro forwards client disconnects (page reload/test teardown) as middleware
94-
* errors, so Vite presents a red overlay for a request the browser deliberately
95-
* abandoned. Swallow only that narrow dev-only case; every real server error
96-
* still reaches Vite's normal error handler. */
93+
/** Nitro forwards client disconnects (page reload/test teardown) and its own
94+
* upstream proxy resets as middleware errors, so Vite presents a red overlay
95+
* for an abandoned request or a dev-worker reconnect. Swallow only those exact
96+
* dev-only transport failures; every application error still reaches Vite's
97+
* normal error handler. */
9798
function ignoreAbortedRequestResets() {
9899
return {
99100
name: "pyops-ignore-aborted-request-resets",
@@ -114,7 +115,9 @@ function ignoreAbortedRequestResets() {
114115
server.middlewares.use((error, req, res, next) => {
115116
const reset = error.code === "ECONNRESET" || error.cause?.code === "ECONNRESET";
116117
const disconnected = req.aborted || req.destroyed || res.destroyed || res.writableEnded;
117-
if (reset && disconnected) return;
118+
const nitroProxyReset =
119+
error.message === "socket hang up" || error.message === "read ECONNRESET";
120+
if (reset && (disconnected || nitroProxyReset)) return;
118121
next(error);
119122
});
120123
};

0 commit comments

Comments
 (0)