node-ssh icon indicating copy to clipboard operation
node-ssh copied to clipboard

ssh.dispose method throwing error after migrating to node 18

Open parth19 opened this issue 1 year ago • 1 comments

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();
     }
}

parth19 avatar Oct 12 '23 16:10 parth19

+1

qiaer avatar Dec 27 '23 06:12 qiaer