如何在Node.js中创建Blob



我尝试在Node.js中创建一个Blob

var b = new Blob(['hi', 'constructing', 'a', 'blob']);

ReferenceError: Blob is not defined失败

然后我尝试使用blob模块(这两行代码来自该模块的示例,请参阅https://www.npmjs.com/package/blob):

var Blob = require('blob');
var b = new Blob(['hi', 'constructing', 'a', 'blob']);

TypeError: Blob is not a constructor失败

我该怎么做?

Node.js现在支持Blob,自v15.7.0/v14.18以来是实验性的,自v18.0.0、v16.17.0以来是稳定的。这是将web API引入Node.js的持续努力的一部分,这样代码就可以在web和Node.js平台上重用。

这个答案的其余部分仍然适用于blob包和您将要使用它的目的:


Node.js过去不具有Blob,它使用Buffer(ArrayBuffer混淆(和类型化数组。

您尝试使用的blobnpm模块不用于Node.js,而是用于浏览器,以消除在不同浏览器中创建Blob的历史差异。根据其描述:

一个跨浏览器Blob,在适当的时候回落到BlobBuilder。如果两者都不可用,则导出undefined

(我的重点(

令人困惑的是,在过去几年里,以浏览器为目标的软件包(成群结队(出现在npm上。一段时间以来,使用require的模块一直是Webpack、Rollup等捆绑器的一个功能,因此人们开始将npm用于浏览器的通用模块,就像将其用于Node.js的通用模块一样。事实上,有些模块是为在这两种环境中都能工作而编写的。(但blob似乎不是其中之一。(

在评论中,您说过要从Node.js进程上传一个文件。您不需要Blob,在Node.js中执行此操作的方式与在浏览器中执行的方式不同。因此,您可能想研究如何从Node.js上传文件,而不必担心Blobs。不过,这将是一个不同的问题。(一个可以在这里回答,如果你愿意使用Express,也可以在这里。(

最新更新