如何在 Node.js 中创建 Blob?
Posted
技术标签:
【中文标题】如何在 Node.js 中创建 Blob?【英文标题】:How do I create a Blob in Node.js? 【发布时间】:2019-05-07 08:06:32 【问题描述】:我尝试在 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
失败
我该怎么做?
【问题讨论】:
你安装的是什么版本的 Blob? 您指的包是针对浏览器的,而不是 Node.js 从描述中: "A cross-browserBlob
that fall back to BlobBuilder
在适当的时候。如果两者都不可用,它会导出undefined
。" (我的重点)
你想对 blob 做什么? Node.js 使用Buffer
或类型化数组,而不是Blob
s。
如果你使用 node.js,你可能想要使用 Buffer。
@Leo - 是的,我确定。有点令人困惑的是,在过去几年中,以浏览器为目标的软件包已经(成群结队地)出现在 npm
上。使用 require
的模块已经成为 Webpack、Rollup 等打包工具的一个功能,因此人们开始将 npm
用于浏览器的通用模块,就像将它用于 Node.js 的通用模块一样。事实上,一些模块被编写为在任一环境中工作。 (但blob
似乎不是其中之一。)
【参考方案1】:
Node.js has experimental Blob
support now,自 v14.18 / v15.7.0 起,将 Web API 引入 Node.js 的持续努力的一部分,因此代码可以在不重写的情况下被重用。
Node.js 没有 不习惯有Blob
,它使用Buffer
(不是混淆ArrayBuffer
) 和 typed arrays。
您尝试使用的 blob
npm
模块不是用于 Node.js,而是用于浏览器,以消除您在不同浏览器中创建 Blob
s 的历史差异。来自its description:
一个跨浏览器
Blob
,在适当的时候回退到BlobBuilder
。如果两者都不可用,则导出undefined
。
(我的重点)
有点令人困惑的是,在过去的几年里,npm
上(成群地)出现了以浏览器为目标的软件包。使用 require
的模块已经成为 Webpack、Rollup 等打包工具的一个特性,因此人们开始将 npm
用于浏览器的通用模块,就像将它用于 Node.js 的通用模块一样。事实上,一些模块被编写为在任一环境中工作。 (但blob
似乎不是其中之一。)
在 cmets 中,您曾说过要从 Node.js 进程上传文件。您不需要Blob
,您在Node.js
中执行此操作的方式与您在浏览器中执行此操作的方式不同。所以你可能想研究如何从 Node.js 上传文件,而不用担心Blob
s。不过,那将是一个不同的问题。 (可以回答 here 或者,如果您愿意使用 Express,here。)
【讨论】:
以上是关于如何在 Node.js 中创建 Blob?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组
如何在 node.js 中的 paypal 中创建可变的定期付款
如何在 Sequelize 中创建一个表以使用 Node JS 存储在 Postgresql 中