节点.js无法创建 Blob?

2022-08-30 05:22:25

我正在使用 node.js并将音频流式传输到我的节点.js服务器。现在我注意到在构建音频 blob 的过程中:

var audioBlob = new Blob([dataview], { type: 'audio/wav' });

我在新的Blob上得到了一个参考错误。似乎不支持 Blob。如何创建要使用 node.js fs 模块保存的 blob?


答案 1

此问题的解决方案是创建一个可以在数组缓冲区和节点缓冲区之间进行转换的函数。:)

将二进制 NodeJS Buffer 转换为 JavaScript ArrayBuffer

在最近的节点版本中,它只是:

let buffer = Buffer.from(arraybuffer);
let arraybuffer = Uint8Array.from(buffer).buffer;

答案 2

由于 Node.js 16,因此可以导入 Blob

import {Blob} from 'node:buffer';

new Blob([]);
//=> Blob {size: 0, type: ''}

否则,只需使用:cross-blob

import Blob from 'cross-blob';
 
new Blob([]);
//=> Blob {size: 0, type: ''}
 
// Global patch (to support external modules like is-blob).
globalThis.Blob = Blob;