使用ReadableStreamBYOBReader读取文件流报非字节流错误如何解决
错误根因排查
你收到的TypeError: Failed to execute 'getReader' on 'ReadableStream': Cannot use a BYOB reader with a non-byte stream报错和参数写法无关,是所用Edge 94版本的内核限制导致的:
- Edge 94的内核为Chromium 94,而Chromium直到98版本才完成了
File.stream()返回流对BYOB reader的支持。低于该版本的Chromium内核浏览器中,File对象生成的可读流默认不属于可支持BYOB读取的字节流类型,自然无法创建BYOB reader。
额外代码问题修正
当前代码还有两处拼写错误,在浏览器版本达标后也需要修改才能正常运行:
- 数组比对时的变量名
my_wn_array应为my_own_array - 最后打印的
my_own_buffer未定义,应该改为你声明的my_own_array
验证情况
在Edge 98及以上版本的浏览器中,修正拼写后的代码可以正常运行,两种方式读取的前16字节数据比对结果一致,可实现你期望的零拷贝读取到自定义缓冲区的需求。
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

