Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Bug Report(Android): prevent NullPointerException crash when Promise.reject receives null code

Aperta Adatta ai principianti
#1,268 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
1/5
Tempo stimato
Meno di un'ora
Idoneità per principianti
85/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
android, java, react-native
Ambito
mobile

Direzione di ricerca

Inizia in android/src/main/java/com/rnfs/RNFSManager.java intorno alla riga 978, dove lo stack trace identifica il percorso del rifiuto, e rivedi il contratto di React Native Promise.reject nell’ambiente indicato. Esegui una chiamata al file system Android che fallisca e conferma che l’eccezione raggiunga JavaScript come rifiuto gestito senza una NullPointerException nativa.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Hi!

Firstly, thanks for your work on this project!

Issue Description

Description
When calling certain file system methods on Android (e.g., RNFSManager), the app crashes on the native side if an exception is thrown.

The underlying cause is that RNFSManager passes null as the first argument to promise.reject(null, ex.getMessage()). Newer versions of React Native implement PromiseImpl in Kotlin, where the code parameter is strictly defined as non-null (@NotNull). Passing null causes Kotlin's runtime assertion to throw an unhandled NullPointerException on the Android main thread, crashing the application before the error can be handled in JavaScript.

Environment
  • React native 0.83.1
  • react-native-fs 2.20

Stacktrace

Fatal Exception: java.lang.NullPointerException
Parameter specified as non-null is null: method com.facebook.react.bridge.PromiseImpl.reject, parameter code
    at com.facebook.react.bridge.PromiseImpl.reject(PromiseImpl.kt:2)
    at com.rnfs.RNFSManager.reject(RNFSManager.java:978)
    at com.rnfs.RNFSManager.access$000(RNFSManager.java:60)

Here is the diff that solved my problem:

--- a/node_modules/react-native-fs/android/src/main/java/com/rnfs/RNFSManager.java
+++ b/node_modules/react-native-fs/android/src/main/java/com/rnfs/RNFSManager.java
@@ -975,7 +975,7 @@ public class RNFSManager extends ReactContextBaseJavaModule {
       return;
     }
 
-    promise.reject(null, ex.getMessage());
+    promise.reject("EUNSPECIFIED", ex.getMessage());
   }
 
   private void rejectFileNotFound(Promise promise, String filepath) {

Lingua principale
C++
Stelle
5k
Fork
1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di itinance/react-native-fs

Tutte le issue di itinance/react-native-fs

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.