Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

onMessage calls the callback twice, with the raw string, when the callback throws

Offen Anfängerfreundlich
#502 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 3 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
85/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
react-native, typescript
Bereich
mobile

Rechercherichtung

Beginne in packages/react-native-brownfield/src/index.ts bei ReactNativeBrownfield.onMessage und untersuche, wie Parsing-Fehler und Callback-Fehler behandelt werden. Reproduziere den Fall mit einer gültigen JSON-Nachricht und einem Callback, der einen Fehler auslöst; fertig ist es, wenn der Callback einmal mit den geparsten Daten ausgeführt wird und sein ursprünglicher Fehler sichtbar wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

ReactNativeBrownfield.onMessage in packages/react-native-brownfield/src/index.ts calls the callback inside the same try block as JSON.parse:

try {
  callback({ data: JSON.parse(payload.text) });
} catch {
  callback({ data: payload.text });
}

If the callback throws while it handles a valid JSON message, the catch branch runs the callback again with the unparsed string as data, and the original error is discarded.

Steps to reproduce

  1. Subscribe with a callback that throws, for example ReactNativeBrownfield.onMessage(() => { throw new Error('boom'); }).
  2. From the native host, post a JSON message such as {"type":"login"}.

Expected behavior

The callback runs once with data set to { type: 'login' }, and the boom error surfaces.

Actual behavior

The callback runs twice: first with { type: 'login' }, then with the string '{"type":"login"}'. The boom error from the first call is swallowed. Handlers that are not idempotent run their side effects twice, and the second call usually fails with a different, misleading error.

Vorherrschende Sprache
TypeScript
Sterne
552
Forks
56
Ø Merge
3 T. 8 Std.
Gemergte PRs (30 T.)
23

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus callstack/react-native-brownfield

Alle Issues in callstack/react-native-brownfield

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.