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!(原创)

原文地址:https://www.cnblogs.com/dsweb/p/13650652.html