Cordova文件插件FileReader.readAsText收到错误,但不调用错误回调
Cordova File plugin FileReader.readAsText gets error but does not call error callback
我正在使用Cordova File插件读取本地文件系统上的JSON。它工作得很好,除了我收到错误的一些文件:
SyntaxError: Unexpected EOF
这些文件可能有错误的字符,我需要修复它们,但我的问题并不存在。我的问题是插件记录错误(在javascript端),但从不调用任何错误回调!!!
当我调试并一步一步地执行时,在javascript方面,我会在FileReader.js中执行exec()命令,然后在objectiveC中一步一个脚印地执行,这看起来很好,但当objectiveC用其sendPluginResult返回结果时,我在javascript控制台中收到了这个错误消息,并且没有抛出错误回调。。。。
有人经历过吗?有没有发现错误的想法?
非常感谢。
我不知道你是否解决了你的问题,但我有一个类似的问题,通过将$cordovaFile.readAsText
更改为$cordovaFile.readAsBinaryString
来解决,没有其他更改。不再有EOF问题。
我已经搜寻了看不见的字符,删除了换行符,并逃脱了一切可能。将文件读取器更改为readAsBinaryString
解决了问题。
Cordova文件插件的readAsText
方法中存在已知错误,这意味着包含非ASCII字符的大于256 kB的文件可能会失败,并显示此错误消息。
readAsText()
读取256kB块中的文件。对于像UTF-8这样的可变宽度编码,如果有一个多字节字符跨越块边界,那么它将被拆分为两个不同的字节序列,每个字节序列都将被视为一个字符。
当JS环境试图用这样一个拆分字符连接第一个chunk时,它会看到字符串中不允许的字节序列,并抛出SyntaxError。
由于这个问题没有附带测试数据,我不能确定这里发生了什么,但似乎很可能。症状是一致的。
我在上面链接的GitHub问题建议了一个解决方法,即使用readAsArrayBuffer()
方法,并使用浏览器内置的TextDecoder.decode()方法转换为文件的正确编码。
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Javascript播放声音会导致“NPObject上的错误调用方法”
- 未捕获的类型错误:调用函数时无法读取未定义的属性“then”
- 电话差距构建地理位置 NPObject 上的错误调用方法
- 间歇性 HTTP 403 禁止访问错误调用相同的 Ajax 代码
- 致命错误:调用未定义的函数 FusionCharts()
- 致命错误:未捕获错误:调用未定义的函数loginRelocate() Javascript
- Codeigntier/AJAX - 致命错误:调用未定义的函数 form_input() in
- 范围错误:调用堆栈超出异步 .eachSeries 上的范围错误
- 未捕获的类型错误:调用 push() 时的类型错误
- 错误:调用 waitForCondition 时错误响应状态:13
- JavaScript 错误:“调用的对象已与其客户端断开连接”在 IE8 中的 window.open 上
- AngularJS函数在路由更改时被错误调用
- Javascript中的作用域错误.调用该对象的不同方法中的方法
- Ajax返回错误调用错误Ajax错误调用
- “function"Javascript中没有定义错误:调用函数的正确方式是什么?
- YouTube iFrame API:没有就绪调用,没有错误调用
- 从 javascript 错误调用的引导进度条
- 小部件,从选项错误调用函数
- JavaScript -当错误调用其他函数时,函数不会抛出错误