私はssh2-sftpライブラリを使ってNodeでファイルを読み書きしようとしています。私はsftpのサイトで大きなCSVファイル(しかし、2 MBのように大きすぎない)をsftp.getし、返されたストリームのデータを読み込むと、14番目のストリームの後でコールが私にぶつかっています。 (「データ」)呼を要求する。私はいくつかの異なるサンプルファイルでこれをテストしましたが、コードは小さなファイルでうまく動作します。しかし、CSVファイルが十分に大きくて14回目のコールを過ぎると、ハングアップするだけで、それ以上読むことはできないようです。そしてstream.on( "close")も決して呼び出されません。ssh2でより大きいsftpファイルを読むsftpノード
明らかに、これはかなり奇妙な動作です。多分誰かがこのライブラリを使って同様のものに遭遇し、何らかの指針を持っていることを期待していました。
それがすべてで助けている場合、ここではいくつかのコード
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();
であり、readStream.on(「データ」)に第14回呼び出した後、それだけでフリーズ。多分ファイルの半分を読んで。