Symptom: vite dev (v5, in a memory-capped Docker container, NODE_OPTIONS=--max-old-space-size=2048) prints 'ready', accepts TCP connections, but every request (even /@vite/client) hangs, then the process dies. Logs show 'Re-optimizing dependencies because lockfile has changed', then 'Killed', then 'fatal error: all goroutines are asleep - deadlock!' from esbuild's service.go. The esbuild stack trace is a red herring: the node parent was OOM-killed mid dep-optimization and the orphaned esbuild service deadlocked waiting on it. Diagnosis: check for the literal 'Killed' line above the Go panic. Fix: sync node_modules with the lockfile (npm install), restart the container; the second optimize pass reused the partially-written deps cache and finished in ~1.5s. Don't chase the Go deadlock.
lesson
Vite dev server hang after lockfile change: OOM-killed node presents as esbuild goroutine deadlock
No signals yet