Я пытаюсь использовать библиотеку ssh2-sftp для чтения/записи файла в Node. Когда я выполняю sftp.get для большего CSV-файла (но не слишком большого — например, всего 2 МБ) на sftp-сайте, а затем читаю данные в возвращаемом потоке, вызов зависает у меня после 14-го потока. ("данные") вызов. Я протестировал это с несколькими различными файлами примеров, и код отлично работает с файлами меньшего размера. Но если CSV-файл достаточно велик, чтобы пройти этот 14-й вызов, он просто зависает и как будто больше не может читать, хотя есть еще что читать. И stream.on("close") тоже никогда не вызывается.
Очевидно, это довольно странное поведение. Надеялся, что, может быть, кто-то сталкивался с чем-то подобным, используя эту библиотеку, и имел какие-то рекомендации.
Если это вообще поможет, вот код
sftp.get(currentFileName).then((readStream) => {
var counter = 0;
readStream.on("data", function(d) {
counter++;
console.log("counter = " + counter);
});
readStream.on("close", function(err) {
if (err) {
console.error("Problem with read stream for file " + currentFileName + ", error = ", err);
}
//done reading the individual file, all went well
else {
console.log("done reading the stream");
}
});
readStream.on('error', function(e){
console.error("Error retrieving file: " + e);
})
readStream.resume();
А после 14-го вызова readStream.on("data") просто зависает. Может быть, половина файла прочитана.