11

I have tried to create a Blob in Node.js. First just this:

var b = new Blob(['hi', 'constructing', 'a', 'blob']);

This fails with ReferenceError: Blob is not defined

Then I tried with the blob module (the two lines of code is from the example for this module, see https://www.npmjs.com/package/blob):

var Blob = require('blob');
var b = new Blob(['hi', 'constructing', 'a', 'blob']);

This fails with TypeError: Blob is not a constructor

How can I do it?

18
  • 1
    What version of Blob do you have installed? Commented Dec 5, 2018 at 17:27
  • 1
    The package you refer to is for browsers, not Node.js From the description: "A cross-browser Blob that falls back to BlobBuilder when appropriate. If neither is available, it exports undefined." (my emphasis) Commented Dec 5, 2018 at 17:27
  • 3
    What do you want to do with the blob? Node.js uses Buffer or typed arrays, not Blobs. Commented Dec 5, 2018 at 17:27
  • 1
    If your using node.js, you might want to use Buffer instead. Commented Dec 5, 2018 at 17:29
  • 1
    @Leo - Yes, I'm sure. 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.) Commented Dec 5, 2018 at 18:12

1 Answer 1

14

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 Blobs 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 Blobs. That would be a different question, though. (One which may be answered here or, if you're willing to use Express, here.)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.