概述
我刚刚将我的世博应用程序从40更新到41,然后这一行代码开始崩溃:
await FileSystem.writeAsStringAsync(filename, aux, {
encoding: FileSystem.EncodingType.UTF8,
});,这是整个函数
export async function writeExternalData(data: CombinedDataModelInterfaces) {
try {
console.log(TAG, '::writeExternalData::data:', data);
// const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
const {status,granted} = await MediaLibrary.requestPermissionsAsync()
console.log(TAG,'::status:',status,'::granted:',granted)
if (status === 'granted') {
let tempname = 'lotusdata_' + new Date().toISOString();
let filename = FileSystem.documentDirectory + tempname + '.json';
console.log(TAG, '::filename:' + filename);
const aux = JSON.stringify(data)
console.log(TAG,'::data as json string:',aux)
await FileSystem.writeAsStringAsync(filename, aux, {
encoding: FileSystem.EncodingType.UTF8,
});
console.log(TAG,'::createAssetAsync')
await MediaLibrary.createAssetAsync(filename);
console.log(TAG,'::assetAsync created')
return filename;
} else {
return new Error('Permissions denied... :(');
}
} catch (error) {
return error;
}
}相关的库版本:
"expo": "^41.0.0",
"expo-document-picker": "~9.1.2",
"expo-file-system": "~11.0.2",
"expo-media-library": "~12.0.2",
"expo-permissions": "~12.0.1",
"expo-sharing": "~9.1.2",
"expo-sqlite": "~9.1.0",
"expo-status-bar": "~1.0.4",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-41.0.0.tar.gz",我得到的本机错误代码
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$4.done(AsyncTask.java:399)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
at abi41_0_0.expo.modules.medialibrary.MediaLibraryUtils.getRelativePathForAssetType(MediaLibraryUtils.java:1)
at abi41_0_0.expo.modules.medialibrary.MediaLibraryUtils.getEnvDirectoryForAssetType(MediaLibraryUtils.java:1)
at abi41_0_0.expo.modules.medialibrary.CreateAsset.createAssetFile(CreateAsset.java:4)
at abi41_0_0.expo.modules.medialibrary.CreateAsset.doInBackground(CreateAsset.java:4)
at abi41_0_0.expo.modules.medialibrary.CreateAsset.doInBackground(CreateAsset.java:1)
at android.os.AsyncTask$3.call(AsyncTask.java:378)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more```发布于 2021-06-06 22:55:30
您的URI是什么样子的?世博会说,如果它是SAF,您必须在写入文件之前创建该文件。
另外,你的地铁控制台记录在哪里?如果失败了,我会清理android项目。
cd android && ./gradlew clean && cd .. && npm run androidhttps://stackoverflow.com/questions/67863024
复制相似问题