steelbrain / node-ssh

SSH2 with Promises
MIT License
947 stars 94 forks source link

ssh.dispose method throwing error after migrating to node 18 #471

Open parth19 opened 1 year ago

parth19 commented 1 year ago

Here's abstract code to read a file on SFTP server using node-ssh.

It was working fine till I was using node 16. But the ssh.dispose statement started throwing error after I migrated to node 18. It is still able to connect with server and read file, but throws error while desposing connection.

It seems upgrade is required on library to make it compatible with node 18. Would you be able to help check. Thanks in advance for any info / support.

Error :

Error: No response from server at cleanupRequests (node_modules/ssh2/lib/protocol/SFTP.js:2730:15) at SFTP.push (node_modules/ssh2/lib/protocol/SFTP.js:191:7) at onCHANNEL_CLOSE (node_modules/ssh2/lib/utils.js:50:13) at ChannelManager.cleanup (/usr/src/app/node_modules/ssh2/lib/utils.js:200:7)

Code :

import { NodeSSH } from 'node-ssh';
async function readFile(path: string): Promise<string> {
     let ssh: NodeSSH | null = null;
    try {
     const ssh = new NodeSSH()
      await ssh.connect({
          host, username, password
       })
      const sftp = await ssh.requestSFTP();
      const fstream = sftp.createReadStream(path);

       return await convertStreamToString(fstream);   // local function to convert stream into a string format using chunks &  Buffer
     } catch() {
       // throw error
     } finally {
      await ssh?.dispose();
     }
}
qiaer commented 11 months ago

+1