如何在Node.js中创建Blob?

9

我尝试在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错误。

我该怎么做?


1
你所提到的包是针对浏览器而非Node.js的。从描述中可以看出:“一个跨浏览器的Blob,在适当情况下会回退到BlobBuilder。如果两者都不可用,则导出undefined。”(我强调了一下) - T.J. Crowder
3
你想对这个 Blob 做什么?Node.js 使用 Buffer 或者 typed array,而不是 Blob - T.J. Crowder
1
如果你正在使用node.js,你可能想使用Buffer。 - Keith
1
@Leo - 是的,我确定。有点令人困惑的是,过去几年中,面向浏览器的包已经在npm上大量出现。使用require的模块一直是像Webpack、Rollup等打包工具的一个特性,因此人们开始像在Node.js中使用公共模块一样,在npm中使用公共模块来供浏览器使用。实际上,有些模块被编写成可以在任何环境下工作。(但blob似乎不是其中之一。) - T.J. Crowder
1
但首先我会进行彻底的搜索,因为似乎有很多关于使用Node.js上传文件的信息。 - T.J. Crowder
显示剩余13条评论
1个回答

13

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混淆)和类型化数组

你尝试使用的blob npm模块不适用于Node.js,它适用于浏览器,以平滑处理在不同浏览器中创建Blob的历史差异。从其描述

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

(我强调)

有点令人困惑的是,过去几年中,针对浏览器的包在npm上大量出现。使用require的模块一直是像Webpack、Rollup等打包工具的特性,所以人们开始像在Node.js中使用常见模块一样,在浏览器中使用npm。实际上,有些模块可以在两个环境中使用。(但blob似乎不是其中之一。)
根据您在评论中的说法,您想从Node.js进程中上传文件。您不需要Blob来实现这个功能,在Node.js中的做法与在浏览器中不同。因此,您可能需要研究如何从Node.js上传文件,而不必担心Blob。这将是一个不同的问题,可以在这里或者如果您愿意使用Express,可以在这里找到答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接