我正在使用 react-native fs 将内容从 CMS 下载到 react-native 应用程序中。这个想法是使用该应用程序来提供在线内容/网站以供离线使用。该应用程序在 Android 上运行良好而不会引发任何错误,但在 iPad (ios 11.4) 上下载永远不会完成。这是我与该函数一起使用的 App.js 的一部分,它在 iPad 上引发错误:
import React, {Component} from 'react'
import {
Platform,
StyleSheet,
Text,
View,
WebView,
Button,
Alert,
NetInfo,
StatusBar,
Modal,
TouchableOpacity,
Image
} from 'react-native'
import RNFS from 'react-native-fs'
export default class App extends Component {
const path = RNFS.DocumentDirectoryPath + '/assets/' + saveAs
let pp = path.split('/')
pp.pop()
return RNFS.mkdir(pp.join('/'), {NSURLIsExcludedFromBackupKey: true}).then(() => {
const download = RNFS.downloadFile({
fromUrl: url,
toFile: path,
discretionary: true,
progress: (res) => {
const tmp = this.state.bytesWritten
tmp[res.jobId.toString()] = res.bytesWritten
this.setState({bytesWritten: tmp})
},
begin: (res) => {
this.setState({
contentLength: this.state.contentLength + res.contentLength
})
},
readTimout: 15000
})
return download.promise.then((res) => {
return res;
})
.catch((error) => {
console.warn('An error occured while downloading: ' + error);
console.warn('Current URL: ' + url);
});
})
.catch ((error) => {
console.warn('An error occured while creating directory: ' + error);
});
}
函数 downloadAndSave 在另一个函数中调用,如下所示:
let pr = []
// d are the files that need to be downloaded, around 250-300
d.forEach((elem) => {
pr.push(this.downloadAndSave(elem.name, elem.saveAs));
})
return Promise.all(pr);
错误总是来自捕获块“下载时发生错误:”。抛出的错误以及受影响 URL 的数量不同。
发生的错误消息是(已翻译,因此它们可能有点偏离):
- 请求/处理无法完成
- 请求超时
- POSIX 错误 -9805 - 未知错误:-9805
该错误在下载大约 50-70% 的文件后发生,然后从未完成,但在 80-90% 左右停止。
我的问题是问题是否与超时有关或可能与许多回调有关?有没有其他人在 react native fs 遇到过这样的问题,或者有人知道如何解决这个问题。恐怕我什至无法真正查明问题所在。任何帮助都深表感谢!