2016-06-17 15 views
0

Ich habe ein Skript, das läuft auf meinem lokalen Computer mit einer 10-Zeilen-Test-Datei. Wenn ich jedoch das Skript in AWS mit der realen Datei verwende, die 20 Millionen Zeilen ist, scheine ich 1/5 der Zeilen zu verlieren. Was mache ich falsch in diesem Skript? Ich erhalte keine Fehlermeldungen.NodeJS lineReader appendFile - Zeilen verloren gehen irgendwo

var sha1 = require('sha1'); 

var fs = require('fs'); 

var lineReader = require('readline').createInterface({ 
    terminal: false, 
    input: require('fs').createReadStream('./readme.txt') 
}); 

    lineReader.on('line', function (line) { 

     var hashed = sha1(line); 

     fs.appendFile('./writeme.txt', line + "," + hashed + "\n", function(err){ 

    }) 

}); 
+1

Verwenden Sie stattdessen appendFileSync, wenn Sie nicht mit asynchronen Terminologie vertraut sind –

Antwort

1

Dies ist, was endlich funktioniert hat. Danke Event-Stream und die Transform-Option!

var fs = require('fs'); 
var stream = require('stream'); 
var es = require('event-stream'); 
var sha1 = require('sha1'); 

var input = fs.createReadStream("readme.txt"); 
var output = fs.createWriteStream("writeme.txt"); 

var parse = new stream.Transform; 

parse._transform = function(chunk, encoding, done) { 

var hashed = sha1(chunk); 
var line = chunk + ' | ' + hashed + '\n'; 

    done(null, line); 
} 

input.pipe(es.split('\n')).pipe(parse).pipe(output); 
Verwandte Themen