2016-12-10 1 views
0

Ich versuche, ein Python-Skript in node.js portieren und hat Probleme mit der Deflate-Methode in zlib.node.js zlib deflate Ungültiges windowBits Problem

Der Python-Skript:

def compressMessage(data): 
    encode_message = data 
    compressor = zlib.compressobj(-1, zlib.DEFLATED, 31, 8, zlib.Z_DEFAULT_STRATEGY) 
    compressed_data = compressor.compress(encode_message) 
    compressed_data += compressor.flush() 
    return compressed_data 

und die Definition von compressobj in zlib in Python:

zlib.compressobj([level[, method[, wbits[, memlevel[, strategy]]]]]) 

zlib.compressobj doc

Und in node.js Ich habe versucht:

var zlibBuffer = zlib.deflateSync(buffer, { 
    windowBits: (zlib.Z_DEFAULT_WINDOWBITS + 16) 
}); 

Welche fehlgeschlagen:

throw new Error('Invalid windowBits: ' + opts.windowBits); 

Ich frage mich, wie die windowBits in node.js zlib zu setzen, so wie ich in Python habe.

Jede Beratung geschätzt wird, Dank :)

+0

Wie die zitierten Dokumente erwähnen, ist der Standardwert für wbits 15 ... Bitte zeigen Sie die Ausgabe-Nachricht von der throw-Anweisung, –

Antwort

0

Verwenden zlib.gzipSync statt zlib.deflateSync.

+0

Diese Antwort scheint es könnte mit ein bisschen mehr eine Erklärung tun? –

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/14553965) – 4c74356b41

+0

Sieht aus wie eine angemessene Antwort für mich, obwohl es kurz genug ist, um schlechte Kritiken auszulösen. OP versuchte, einen gzip-Datenstrom mit einem Deflate-Decoder zu dekodieren. –