我曾尝试在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
,此操作失败
我该怎么做呢?
发布于 2018-12-06 19:31:35
Node.js没有Blob
,它使用Buffer
(不要与ArrayBuffer
混淆)和typed arrays。
您尝试使用的blob
npm
模块不是在Node.js中使用,而是在浏览器中使用,以消除在不同浏览器中创建Blob
的历史差异。来自its description
在适当的时候回退到
BlobBuilder
的cross-browserBlob
。如果两者都不可用,则导出undefined
。
(我的重点)
有些令人困惑的是,针对浏览器的软件包在过去几年里一直(成群结队地)出现在npm
上。使用require
的模块已经是像Webpack,Rollup等捆绑包的一个特性,所以人们开始在浏览器的通用模块中使用npm
,就像在Node.js的通用模块中使用一样。事实上,有些模块可以在这两种环境中工作。(但blob
似乎不是其中之一。)
在评论中,你说你想从你的Node.js进程上传一个文件。为此,您不需要Blob
,在Node.js
中执行此操作的方式与在浏览器中执行此操作的方式不同。所以你可能想研究一下如何在不担心Blob
的情况下从Node.js上传文件,但这是另一个问题。(这个问题可能会被回答为here,或者,如果您愿意使用Express,则可以使用here。)
https://stackoverflow.com/questions/53637644
复制相似问题