react-native 上傳文件時報錯,Network request failed


報錯情景:

  版本:

"react": "16.13.1",
"react-native": "0.63.2",

  fetch的其他請求都可以,但是上傳文件報錯。其實,查找文檔可知,0.62.0版本以上都有這個問題。代碼回滾到RN 0.61.5版本就不會有以上問題。

  報錯內容: 請求沒有到后台,報錯 ‘Network request failed’

問題出現原因

  Flipper Network構建initializeFlipper時出現的問題。

解決辦法:

  (1)Flipper Network構建initializeFlipper時出現的問題。   

    找到/android/app/src/main/java/com/{your_project}/MainApplication.java

    將initializeFlipper(this, getReactNativeHost().getReactInstanceManager())注釋

NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
      NetworkingModule.setCustomClientBuilder(
          new NetworkingModule.CustomClientBuilder() {
            @Override
            public void apply(OkHttpClient.Builder builder) {
     //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
            }
         });

  或者找到android/app/src/debug/java/com/**/ReactNativeFlipper.java文件注釋43行

  

38 NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            @Override
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);

  (2)Flipper 已經在0.39.0版本修復了問題的一部分,之所以說是一部分,是因為我升級到0.39.0+以后仍有問題,我測試到升級Flipper 0.51.2仍然報錯,但是解決了部分人的問題,比如RN0.62.0版本。

    Flipper升級方法:

    轉到android/gradle.properties並添加此行

FLIPPER_VERSION=0.52.1

    同時在android/app/build.gradle其中包含以下幾行

dependencies {
    // ....

    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
      exclude group:'com.facebook.fbjni'
    }

    debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
        exclude group:'com.facebook.flipper'
    }

    // ...
}

  (3)如果有人在RN 0.62或更高版本中仍然遇到問題,解決方案是:必須提供uri,名稱和要上載的媒體類型。

  

formData.append('media_incident', {
          uri: image.path,
          type: image.mime,
          name: 'filename.jpg',
        });

  8個小時解決了這個問題!!!

  如果解決了您的問題,麻煩點個贊被!

  Enjoy Coding,enjoy life!(原創)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM