2016-03-30 10 views
0

Ich versuche mit slice() einige unerwünschte Elemente aus dem Puffer zu entfernen. Code geht so:NodeJS buffer.slice() ist keine Funktion?

function unpack (item) { // item is a buffer 
    var ivlength = 16; 
    if(algorithm == 'aes-128-ecb') ivlength = 0; 
    var ciphertext = item.slice(ivlength, item.length); 
    return ciphertext; 
} 

Die Konsole sagt: item.slice() ist keine Funktion. Die NodeJS-Dokumentation sagt etwas anderes: buf.slice() documentation.

Ich habe NodeJS auf 5.9.1 Version ohne Verbesserungen aktualisiert.

Antwort

1

slice() ist, was unterstützt wird, nicht s p Läuse().

+0

Sorry, es war ein Tippfehler. Ich habe Slice() zwar benutzt, aber es funktioniert nicht. –

+0

Was zeigt 'console.dir (Buffer.isBuffer (item))'? – mscdex

+0

Er sagt, falsch, aber 'console.log (msg)' sagt: 'Uint8Array [188] Proto: ' Funktion Pack (iv, Chiffretext) { \t if (Algorithmus: Buffer' Artikel ein Produkt von ist == 'aes-128-ecb') iv = neuer Puffer (''); \t var item = Buffer.concat ([iv, verschlüsselter Text]); \t Artikel zurücksenden; } ' –

0

Das Problem trat auf, weil ich versucht habe, empfangene Artikel als Pufferparameter in der Funktion unpack() zu verwenden. Bevor es an diese Funktion übergeben wurde, wurde es serialisiert und über den Socket empfangen, ohne zu wissen, dass der Puffer nicht serialisiert werden kann. I gelöst dies durch einen neuen Puffer aus den empfangenen Daten zu schaffen, wie folgt:

var buff = new Buffer(_msg.content); 
var data = unpack(buff); 

Die Funktion slice() funktioniert nun.