22
votes

I'm using Mocha / Chai to unit test a library that has recently started using nodejs' Buffer objects to solve a different problem.

I get this error message in the unit test:

TypeError: this is not a typed array. 
at Function.from (native) 
at Object.hashesMatch (index.js:29:18
at Context.<anonymous> (test/test.js:25:22)

Line 29 of index.js is where I'm using nodejs' Buffer...

var b = Buffer.from ('some string or other');

I can't find a polyfill or workaround so would be grateful for suggestions.

Thanks

3

3 Answers

43
votes

You might be using an old version of Node.js.

Buffer.from was introduced in version 6.0.0:

To make the creation of Buffer objects more reliable and less error prone, the various forms of the new Buffer() constructor have been deprecated and replaced by separate Buffer.from(), Buffer.alloc(), and Buffer.allocUnsafe() methods.

There's no reference to this method in previous versions of documentiation.

You could either update to 6.0.0 or use a deprecated constructor API, which has the following signature:

new Buffer(str[, encoding])
5
votes

I also got the same error. You can try this

var b = new Buffer('some string or other');

Second param is encoding (optional). By default encoding will be utf-8

0
votes

There are times when its difficult to update the node version especially if you are using at production so the another solution is

use "kafka-node": "1.6.2" or lesser