如何在 Node.js 中创建 Blob?

How do I create a Blob in Node.js?

提问人:Leo 提问时间:12/6/2018 最后编辑:T.J. CrowderLeo 更新时间:5/2/2023 访问量:33825

问:

我尝试在Node.js中创建一个Blob。首先,就是这样:

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

这失败ReferenceError: Blob is not defined

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

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

这失败TypeError: Blob is not a constructor

我该怎么做?

JavaScript 节点 .js blob

评论

1赞 bork 12/6/2018
您安装了哪个版本的 Blob?
1赞 T.J. Crowder 12/6/2018
您引用的包适用于浏览器,而不是 Node.js 来自描述:“在适当的时候回退到 BlobBuilder 的跨浏览器 Blob如果两者都不可用,则导出未定义 (我的重点)
3赞 T.J. Crowder 12/6/2018
您要对 blob 执行什么操作?Node.js 使用 或类型化数组,而不是 s。BufferBlob
1赞 Keith 12/6/2018
如果您使用 node.js,则可能需要改用 Buffer。
1赞 T.J. Crowder 12/6/2018
@Leo - 是的,我敢肯定。有点令人困惑的是,在过去几年中,针对浏览器的软件包已经(成群结队)出现。一段时间以来,模块使用一直是 Webpack、Rollup 等打包器的一个特性,因此人们开始将其用于浏览器的通用模块,就像将其用于 Node.js 的通用模块一样。事实上,某些模块被编写为在任一环境中工作。(但似乎不是其中之一。npmrequirenpmblob

答:

13赞 T.J. Crowder 12/6/2018 #1

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

不过,此答案的其余部分仍然适用于软件包以及您将使用它的目的:blob


Node.js 以前没有,它使用 Buffer不要与)和类型化数组BlobArrayBuffer

您尝试使用的模块不是用于 Node.js,而是用于浏览器,以消除您在不同浏览器中创建 s 的方式的历史差异。从其描述blobnpmBlob

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

(我的重点)

有点令人困惑的是,在过去几年中,针对浏览器的软件包已经(成群结队)出现。一段时间以来,模块使用一直是 Webpack、Rollup 等打包器的一个特性,因此人们开始将其用于浏览器的通用模块,就像将其用于 Node.js 的通用模块一样。事实上,某些模块被编写为在任一环境中工作。(但似乎不是其中之一。npmrequirenpmblob

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