Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte Adaptée aux débutants
#502 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 3 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
85/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
react-native, typescript
Domaine
mobile

Piste de recherche

Commencez dans packages/react-native-brownfield/src/index.ts, à ReactNativeBrownfield.onMessage, et examinez la manière dont les erreurs d’analyse et les erreurs du callback sont gérées. Reproduisez le cas avec un message JSON valide et un callback qui lève une erreur ; le travail est terminé lorsque le callback s’exécute une fois avec les données analysées et que son erreur d’origine remonte.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
TypeScript
Étoiles
552
Forks
53
Merge moyen
3 j 8 h
PR mergées (30 j)
23

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de callstack/react-native-brownfield

Toutes les issues de callstack/react-native-brownfield

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.