uni-app plus.io.resolveLocalFileSystemURL首次启动程序时 调用不执行

uni-app plus.io.resolveLocalFileSystemURL首次启动程序时 调用不执行

示例代码:

plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
console.log('plus.io.resolve调用了。。。。')
entry.file(function(file) {
console.log('entry调用了')
var fileReader = new plus.io.FileReader()
fileReader.onload = function(data) {
console.log('plusio执行成功'+JSON.stringify(data))
resolve(data.target.result)
}
fileReader.onerror = function(error) {
console.log(error+'本地路径1:'+JSON.parse(getLocalFilePath(path)))
reject(error+'本地路径:'+JSON.parse(getLocalFilePath(path)))
}
fileReader.readAsDataURL(file)
}, function(error) {
console.log(error+'本地路径2:'+JSON.stringify(getLocalFilePath(path)))
reject(error+'本地路径:'+JSON.stringify(getLocalFilePath(path)))
})

操作步骤:

首次运行程序 不执行

预期结果:

首次运行程序 也执行该方法

实际结果:

首次上传了图片执行方法的时候不执行,返回页面重新进入上传图片的页面就会成功执行

bug描述:

plus.io.resolveLocalFileSystemURL 真机调试 首次启动上传图片以后调用这个方法 不执行


更多关于uni-app plus.io.resolveLocalFileSystemURL首次启动程序时 调用不执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app plus.io.resolveLocalFileSystemURL首次启动程序时 调用不执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 开发应用时,如果你遇到 plus.io.resolveLocalFileSystemURL 在首次启动程序时不执行的问题,可能是由于以下几个原因导致的:

1. plus 对象未初始化

plus 对象是 HTML5+ 提供的扩展 API,它需要等待 plusready 事件触发后才能使用。如果你在 plus 对象未初始化时调用 plus.io.resolveLocalFileSystemURL,可能会导致函数不执行。

解决方案: 确保在 plusready 事件触发后再调用 plus.io.resolveLocalFileSystemURL

document.addEventListener('plusready', function() {
    plus.io.resolveLocalFileSystemURL('_www/yourfile.txt', function(entry) {
        console.log('File resolved:', entry);
    }, function(error) {
        console.error('Error resolving file:', error);
    });
}, false);

2. 路径问题

resolveLocalFileSystemURL 需要正确的文件路径。如果路径不正确,函数可能不会执行或返回错误。

解决方案: 确保你传入的路径是有效的。通常,_www 是应用的根目录。

plus.io.resolveLocalFileSystemURL('_www/yourfile.txt', function(entry) {
    console.log('File resolved:', entry);
}, function(error) {
    console.error('Error resolving file:', error);
});

3. 权限问题

在某些情况下,可能需要特定的权限才能访问文件系统。如果权限不足,可能会导致函数不执行。

解决方案: 确保应用有足够的权限访问文件系统。你可以在 manifest.json 中配置相关权限。

{
    "permissions": {
        "FileSystem": {
            "description": "Access to the file system"
        }
    }
}

4. 异步问题

resolveLocalFileSystemURL 是异步操作,如果你在异步操作完成之前执行了某些依赖它的代码,可能会导致问题。

解决方案: 确保你在回调函数中处理后续逻辑。

plus.io.resolveLocalFileSystemURL('_www/yourfile.txt', function(entry) {
    console.log('File resolved:', entry);
    // 在这里处理后续逻辑
}, function(error) {
    console.error('Error resolving file:', error);
});

5. 首次启动时的延迟

在首次启动应用时,plus 对象可能需要一些时间来初始化。如果立即调用 resolveLocalFileSystemURL,可能会导致函数不执行。

解决方案: 你可以设置一个延迟,确保 plus 对象已经初始化。

setTimeout(function() {
    plus.io.resolveLocalFileSystemURL('_www/yourfile.txt', function(entry) {
        console.log('File resolved:', entry);
    }, function(error) {
        console.error('Error resolving file:', error);
    });
}, 1000); // 延迟1秒

6. 调试信息

如果以上方法都无法解决问题,建议添加更多的调试信息,检查是否有其他潜在的错误。

document.addEventListener('plusready', function() {
    console.log('plus is ready');
    plus.io.resolveLocalFileSystemURL('_www/yourfile.txt', function(entry) {
        console.log('File resolved:', entry);
    }, function(error) {
        console.error('Error resolving file:', error);
    });
}, false);
回到顶部