HMR WebSocket fails - middlewareMode prevents Vite's WebSocket handler
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- typescript, vite
- Ambito
- tooling
Direzione di ricerca
Inizia in src/adapter/dev-server.ts, concentrandoti sulla configurazione del server e sull’entry point startDev descritti nell’issue. Riproduci il problema con marko-run dev attraverso un proxy e confronta la configurazione WebSocket con quella di Vite puro. Il lavoro è completato quando la connessione HMR tramite proxy riceve 101 Switching Protocols invece di 404.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
HMR WebSocket connections fail when using marko-run dev. The WebSocket upgrade request returns 404 instead of 101 Switching Protocols.
Environment
@marko/run: 0.9.3vite: 7.2.2- Node.js: 20.x
Reproduce Steps
- Run
marko-run dev - Access the dev server through any proxy (Cloudflare Tunnel, nginx, etc.)
- Open browser DevTools → Network → WS filter
- Observe WebSocket returns 404, HMR doesn't work
Root Cause
In src/adapter/dev-server.ts:
server: { ...config?.server, middlewareMode: true }
Then in startDev:
const listener = devServer.middlewares.listen(port, ...);
The problem:
middlewareMode: truetells Vite NOT to create its own HTTP server (devServer.httpServerisnull)middlewares.listen()creates a NEW HTTP server- This new server doesn't have Vite's WebSocket upgrade handler attached
- WebSocket upgrades get routed as HTTP GET → 404
Proof
- Raw
npx vite→ WebSocket returns101 Switching Protocols✅ marko-run dev→ WebSocket returns404❌
Proposed Fix
// Don't use middlewareMode
server: { ...config?.server, middlewareMode: false }
// Use Vite's httpServer
devServer.httpServer.listen(port, ...);
Workaround
Users can use patch-package to patch node_modules/@marko/run/dist/adapter/index.js:
- Change
middlewareMode: truetofalse - Change
devServer.middlewares.listen()todevServer.httpServer.listen()
- Lingua principale
- TypeScript
- Stelle
- 175
- Fork
- 17
- Merge medio
- 13h 34m
- PR unite (30g)
- 16
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di marko-js/run
-
DEP0190: spawnServer passes args array with shell:true, triggering Node v26 deprecation warningAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Dev server answers 404 to every route after Vite restarts (e.g. after an edit of `vite.config.ts`)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 4/5 1-2 giorni Idoneità per principianti 15/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
marko-js/run#296 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Unusually high memory usageAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di marko-js/run
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
pingdotgg/t3code#24900 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
inu-appcenter/UNIDorm-web#411 ·
I maintainer di solito rispondono entro 1 giorno
-
🐛 bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
ranxianglei/billion-context#4720 ·
I maintainer di solito rispondono entro 1 giorno
-
area:arcade game p3-medium ready-for-agent type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
fderuiter/deruiter.dev#2840 ·
I maintainer di solito rispondono entro 1 giorno