使用ssh2 sftp节点读取较大的sftp文件

我正在尝试使用ssh2-sftp库在Node中读取/写入文件。 当我在一个sftp站点上对一个更大的CSV文件(但不是太大 – 比如只有2MB)做一个sftp.get,然后在返回的数据stream上读取数据时,第14个stream之后的呼叫挂在我身上。 (“数据”)呼叫。 我已经testing了几个不同的示例文件,代码在较小的文件上工作正常。 但是,如果一个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”)之后,它就冻结了。 也许有一半的文件被读取。

结果问题是,ssh2-sftp似乎正在运行底层ssh2库的过时版本。 从ssh2-sftp切换到ssh2的最新(0.5.2)版本,并直接使用该库修复了问题(可能是这个问题: https : //github.com/mscdex/ssh2/issues/450 )