uni-app 【报Bug】plus.io.resolveLocalFileSystemURL等API无响应,无报错
uni-app 【报Bug】plus.io.resolveLocalFileSystemURL等API无响应,无报错
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 3.99 | 云端 |
示例代码:
const uploadAllRecords = async (callback) => {
// 如果最近一次上传文件的时间存在,并且与本次发起上传的时间间隔小于5s,则放弃本次上传
// 防止同一个录音文件被多次上传
if (lastUploadTime && Date.now() - lastUploadTime < 5000) return;
lastUploadTime = Date.now();
const originDir = await config.$VOICE_DIR();
console.log('录音位置:', originDir);
// plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function( fs ) {
// // 可通过fs进行文件操作
// alert( "File system name: " + fs.name );
// // 通过fs.root获取DirectoryEntry对象进行操作
// // fs.root
// }, function ( e ) {
// alert( "Request file system failed: " + e.message );
// } );
plus.io.resolveLocalFileSystemURL(originDir, (entry) => {
console.log('============>>>', JSON.stringify(entry));
const dirReader = entry.createReader();
dirReader.readEntries((entries) => {
console.log('录音文件数:', entries.length);
});
}, e => {
console.error('解析资源位置失败', e);
});
}
6 回复
manifest.json中配权限了么
你是说文件读写的权限吗? <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
这俩是有的
回复 helloheil: 您好 问题解决了吗
问题解决了吗?
在 uni-app 中使用 plus.io.resolveLocalFileSystemURL
等 API 时,如果发现无响应且无报错,可能是以下几个原因导致的。下面是一些排查和解决问题的建议:
1. 运行环境问题
- 问题描述:
plus.io.resolveLocalFileSystemURL
是 HTML5+ 扩展 API,只有在 HBuilderX 打包的 App 或真机调试时才能生效,H5 和小程序环境下是不支持的。 - 解决方法:
- 确保是在 App 环境下运行代码。
- 使用
uni.getSystemInfoSync().platform
检查当前运行环境,确保是"app"
。 - 如果是 H5 或小程序,需要使用其他兼容方案。
2. 路径问题
- 问题描述:
resolveLocalFileSystemURL
的参数需要是一个合法的本地文件路径,如果路径错误或不合法,可能会导致无响应。 - 解决方法:
- 确保传入的路径是
_www
、_doc
、_downloads
等合法目录下的路径。 - 示例:
plus.io.resolveLocalFileSystemURL('_www/test.txt', function(entry) { console.log('文件路径解析成功:', entry.fullPath); }, function(error) { console.error('文件路径解析失败:', error); });
- 确保传入的路径是
3. 权限问题
- 问题描述:在 Android 设备上,访问某些目录(如外部存储)可能需要动态申请权限。
- 解决方法:
- 确保在
manifest.json
中配置了所需的权限。 - 在代码中动态申请权限,例如:
plus.android.requestPermissions(['android.permission.WRITE_EXTERNAL_STORAGE'], function(result) { console.log('权限申请结果:', result); }, function(error) { console.error('权限申请失败:', error); });
- 确保在
4. 异步回调问题
- 问题描述:
resolveLocalFileSystemURL
是异步操作,如果回调函数未正确执行,可能会导致无响应。 - 解决方法:
- 确保回调函数逻辑正确,并在回调中处理成功和失败的情况。
- 示例:
plus.io.resolveLocalFileSystemURL('_www/test.txt', function(entry) { console.log('成功:', entry); }, function(error) { console.error('失败:', error); });
5. 代码逻辑问题
- 问题描述:其他代码逻辑错误可能导致
resolveLocalFileSystemURL
无法正常执行。 - 解决方法:
- 检查代码中是否有未捕获的异常或死循环。
- 使用
try-catch
捕获可能的异常:try { plus.io.resolveLocalFileSystemURL('_www/test.txt', function(entry) { console.log('成功:', entry); }, function(error) { console.error('失败:', error); }); } catch (e) { console.error('捕获异常:', e); }