Fix: handle missing MessageEvent in React Native (Hermes engine)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- react-native, typescript
- Ambito
- mobile-dev
Direzione di ricerca
Inizia in packages/partysocket/src/ws.ts, in cloneEventNode intorno alla riga 72, e analizza il percorso isReactNative esistente. Esegui i test partysocket pertinenti, inclusi i test aggiunti dal fork collegato, se disponibili, e conferma che Hermes funzioni senza MessageEvent, mentre il comportamento nel browser e in Node.js rimane invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug
cloneEventNode in packages/partysocket/src/ws.ts (line 72) calls new MessageEvent(e.type, e) unconditionally. React Native's Hermes engine doesn't provide MessageEvent as a global, causing:
ReferenceError: Property 'MessageEvent' doesn't exist
This makes partysocket unusable on React Native without a user-side polyfill. Libraries that depend on partysocket (like @novu/js) are also affected.
The existing isReactNative detection correctly routes RN to cloneEventNode (since #257), but cloneEventNode itself assumes MessageEvent exists.
Environment
React Native 0.81.5 / Expo 54
Hermes engine (default since RN 0.70+)
partysocket 1.1.16 (same issue in all versions)
Proposed Fix
Check typeof MessageEvent !== "undefined" before using it. When unavailable, fall back to a plain Event with manually copied data, origin, and lastEventId properties:
function cloneEventNode(e: Event) {
if ("data" in e) {
if (typeof MessageEvent !== "undefined") {
return new MessageEvent(e.type, e);
}
// Fallback for React Native (Hermes) where MessageEvent doesn't exist
const evt = new Event(e.type, e) as Event & Record<string, unknown>;
evt.data = (e as MessageEvent).data;
evt.origin = (e as MessageEvent).origin;
evt.lastEventId = (e as MessageEvent).lastEventId;
return evt;
}
// ... rest unchanged
}
Zero behavior change for browsers and Node.js where MessageEvent exists.
Fork with fix + tests: https://github.com/marouanechoukri31/partykit/tree/fix/react-native-messageevent
Related: #516
- Lingua principale
- TypeScript
- Stelle
- 1.3k
- Fork
- 84
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la 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 cloudflare/partykit
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
cloudflare/partykit#425 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cloudflare/partykit#424 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cloudflare/partykit#423 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cloudflare/partykit#419 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
cloudflare/partykit#411 ·
Tutte le issue di cloudflare/partykit
Issue simili
-
triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
🎙️ task - drop the raw `./node_modules/.bin/rhachet roles boot` line from bhuild's feedback templateAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
ehmpathy/rhachet-roles-bhuild#639 ·
I maintainer di solito rispondono entro 1 giorno
-
e2e-failure ready-to-code
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
redhat-developer/rhdh-plugin-export-overlays#4650 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
omdsh-dev/DSH-better-sidebar#1098 ·
I maintainer di solito rispondono entro 2 giorni