提问人:Leo 提问时间:12/6/2018 最后编辑:T.J. CrowderLeo 更新时间:5/2/2023 访问量:33825
如何在 Node.js 中创建 Blob?
How do I create a Blob in Node.js?
问:
我尝试在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
我该怎么做?
答:
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
(不要与)和类型化数组。Blob
ArrayBuffer
您尝试使用的模块不是用于 Node.js,而是用于浏览器,以消除您在不同浏览器中创建 s 的方式的历史差异。从其描述:blob
npm
Blob
在适当的时候回退到的跨浏览器。如果两者都不可用,则导出 。
Blob
BlobBuilder
undefined
(我的重点)
有点令人困惑的是,在过去几年中,针对浏览器的软件包已经(成群结队)出现。一段时间以来,模块使用一直是 Webpack、Rollup 等打包器的一个特性,因此人们开始将其用于浏览器的通用模块,就像将其用于 Node.js 的通用模块一样。事实上,某些模块被编写为在任一环境中工作。(但似乎不是其中之一。npm
require
npm
blob
在评论中,您说要从 Node.js 进程上传文件。你不需要这样做,你这样做的方式与你在浏览器中这样做的方式不同。因此,您可能想研究如何从 Node.js 上传文件,而不必担心 s。不过,这将是一个不同的问题。(可以在这里回答,或者,如果你愿意使用Express,可以在这里回答。Blob
Node.js
Blob
评论
Blob
。如果两者都不可用,则导出
未定义
。 (我的重点)Buffer
Blob
npm
require
npm
blob