uni-app 【报Bug】plus.io.resolveLocalFileSystemURL等API无响应,无报错

发布于 1周前 作者 wuwangju 来自 Uni-App

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);
      }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!