ApriOri
ApriOri

Reputation: 2688

Meteor ReferenceError Buffer is not defined

I'm running Meteor 1.4.2.3 and after adding some code that deals with files I get a reference error saying "Buffer" is not defined.

The error is in util.js

exports.isPrimitive = isPrimitive; exports.isBuffer = Buffer.isBuffer;

Uncaught ReferenceError: Buffer is not defined
    at util.js (modules.js:29525)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at meteorInstall.node_modules.meteor-node-stubs.node_modules.readable-stream.lib._stream_readable.js (modules.js:25209)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at meteorInstall.node_modules.meteor-node-stubs.node_modules.readable-stream.readable.js (modules.js:25144)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at meteorInstall.node_modules.meteor-node-stubs.node_modules.stream-browserify.index.js (modules.js:24653)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at meteorInstall.node_modules.gm.index.js (modules.js:21644)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at meteorInstall.both.collections.files.collection.js (app.js:2317)
    at fileEvaluate (modules-runtime.js:343)
    at require (modules-runtime.js:238)
    at app.js:2583

What is the dependency for Buffer ? am I missing a package?

Upvotes: 1

Views: 4163

Answers (2)

NoloMokgosi
NoloMokgosi

Reputation: 1708

Adding this code on Startup worked for me

 global.Buffer = function() {}
 global.Buffer.isBuffer = () => false

Complete Code looks like this

Meteor.startup(()=> {
  global.Buffer = function() {}
  global.Buffer.isBuffer = () => false
  ReactDOM.render(<App />, document.getElementById('container'));
});

Upvotes: 0

Kaivosukeltaja
Kaivosukeltaja

Reputation: 15735

Buffer is a builtin class in Node.js and doesn't exist in browsers. If there is a separate browser compatible version of the dependency try using that one instead. If not, there is a package in NPM called buffer that can be used as a polyfill in browsers, React Native and other non-Node.js environments.

import Buffer from 'buffer';

if (typeof this.Buffer === 'undefined') {
  this.Buffer = Buffer.Buffer;
}

Upvotes: 2

Related Questions