2016-04-27 37 views
20

Sto usando Mocha/Chai per testare un'unità una libreria che ha recentemente iniziato ad utilizzare gli oggetti Buffer di nodejs per risolvere un problema diverso.Ottenere TypeError: questo non è un array tipizzato utilizzando Buffer.from in moka

ricevo questo messaggio di errore nel test di unità:

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) 

Linea 29 di index.js è dove sto utilizzando tampone nodejs' ...

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

non posso trovare un polyfill o soluzione alternativa, quindi sarei grato per i suggerimenti.

Grazie

risposta

35

È possibile che si stia utilizzando una versione precedente di Node.js.

Buffer.fromwas introduced nella versione 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.

Non c'è alcun riferimento a questo metodo in previous versions di documentiation.

Si potrebbe o aggiornamento 6.0.0 o utilizzare un'API costruttore deprecato, che ha la seguente firma:

new Buffer(str[, encoding]) 
+0

grazie! questo ha funzionato come un fascino. Il mio nodo era la versione corretta, stava usando la versione vanilla del costruttore che ha fatto il trucco. – VorpalSword

+5

BTW, è stato eseguito il backport in v4.5.0 https://nodejs.org/docs/v4.5.0/api/buffer.html#buffer_class_method_buffer_from_array e v5.10.0 - https://nodejs.org/docs/v5.10.0/ api/buffer.html # buffer_class_method_buffer_from_array –

+1

Molto utile @NathanFriedly - Necessari quei numeri di versione esatti per il supporto legacy sul modulo NPM [apicache] (https://www.npmjs.com/package/apicache) – kwhitley

3

Ho anche ottenuto lo stesso errore. Potete provare questo

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

Il secondo parametro è la codifica (opzionale). Per impostazione predefinita la codifica sarà utf-8