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