我试图在Node.js中创建一个Blob。首先就是这个:
from astropy.cosmology import WMAP9 as cosmo
import astropy.units as u
H0 = cosmo.H(0)
t0 = 1.0/H0
t0_Gyr = t0.decompose().to(u.Gyr)
print (t0_Gyr)
<Quantity 14.10548502 Gyr>
此操作失败,显示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']);
我该怎么办?
答案 0 :(得分:2)
Node.js没有Blob
,它使用Buffer
(不是与ArrayBuffer
混淆)和typed arrays。 / p>
您尝试使用的blob
npm
模块不适用于Node.js,而是用于浏览器,以消除创建Blob
的历史差异在不同的浏览器中。来自its description:
一个跨浏览器
Blob
,在适当时会回退到BlobBuilder
。如果两者都不可用,它将导出undefined
。
(我的重点)
令人困惑的是,在过去的几年中,以浏览器为目标的程序包(大量)出现在npm
上。一段时间以来,使用require
的模块一直是诸如Webpack,Rollup等捆绑程序的功能,因此人们开始将npm
用于浏览器的通用模块,就像将其用于Node的通用模块一样。 js。实际上,有些模块是在两种环境下均可工作的。 (但是blob
似乎不是其中之一。)
在评论中,您说过要从Node.js进程上载文件。您并不需要Blob
,在Node.js
中执行此操作的方式与在浏览器中执行此操作的方式不同。因此,您可能想研究如何从Node.js上传文件,而无需担心Blob
s。但是,那将是一个不同的问题。 (可能会回答here,或者,如果您愿意使用Express,则回答here。)