Node.js has Blob
support now, experimental since v15.7.0 / v14.18 and stable since v18.0.0, v16.17.0. This is part of the ongoing effort to bring web APIs to Node.js so code can be reused across the web and Node.js platforms.
The rest of this answer still applies re the blob
package and the purpose you were going to use it for, though:
Node.js doesn't didn't used to have Blob
, it uses Buffer
(not to be confused with ArrayBuffer
) and typed arrays.
The blob
npm
module you tried to use isn't for use in Node.js, it's for use in a browser, to smooth over historical differences in how you create Blob
s in different browsers. From its description:
A cross-browser Blob
that falls back to BlobBuilder
when appropriate. If neither is available, it exports undefined
.
(my emphasis)
Somewhat confusingly, browser-targeted packages have been appearing (in droves) on npm
the last few years. Modules using require
have been a feature of bundlers like Webpack, Rollup, etc., for a while, and so people started using npm
for common modules for browsers just like using it for common modules for Node.js. In fact, some modules are written to work in either environment. (But blob
doesn't appear to be one of them.)
In comments, you've said you want to upload a file from your Node.js process. You don't need a Blob
for that, the way you do this in Node.js
is different from the way you do it in a browser. So you probably want to research how to upload files from Node.js, without worrying about Blob
s. That would be a different question, though. (One which may be answered here or, if you're willing to use Express, here.)
Blob
that falls back toBlobBuilder
when appropriate. If neither is available, it exportsundefined
." (my emphasis) – MaidenhoodBuffer
or typed arrays, notBlob
s. – Maidenhoodnpm
the last few years. Modules usingrequire
have been a feature of bundlers like Webpack, Rollup, etc., for a while, and so people started usingnpm
for common modules for browsers just like using it for common modules for Node.js. In fact, some modules are written to work in either environment. (Butblob
doesn't appear to be one of them.) – Maidenhood