2017-05-19 4 views
0

Ich verwende https://github.com/mscdex/ssh2 für meine FTP-Anforderungen. habe ich versucht, Code unten erwähnt:Promistifier Node SSH2 SFTP mit Bluebird

'use strict'; 

global.Promise = require("bluebird"); 
global._ = require('lodash'); 

var Client = Promise.promisifyAll(require('ssh2').Client); 
Promise.promisifyAll(Client.prototype); 

var clientObject, conn; 

function getClient() { 
    return new Promise((resolve, reject) => { 
     if (clientObject) resolve(clientObject); 

     let authObj = { 
      host: 'abc', 
      port: 22, 
      username: 'name', 
      password: 'password' 
     }; 

     conn = new Client(); 
     conn.connect(authObj); 

     conn.on('ready',() => { 
      conn.sftp((err, sftp) => { 
       if (err) reject(err); 
       clientObject = sftp; 
       resolve(clientObject) 
      }); 
     }); 

     conn.on('error', (err) => { reject(err) }); 
    }); 
} 


function getList(){ 
    getClient().then((cObj)=>{ 
     cObj.readdir('.').then((list)=>{ 
      _.each(list, (file)=>{console.log(file.filename)}); 
     }); 
    }); 
} 


getList(); 

oben gegeben Fehler wie:

Unhandled rejection TypeError: cObj.readdir(...).then is not a function 
. 
. 
. 
/home/nk/test/node_modules/ssh2-streams/lib/sftp.js:1583 
      cb(undefined, entries); 
      ^

TypeError: cb is not a function 
    at /home/nk/test/node_modules/ssh2-streams/lib/sftp.js:1583:13 

Von oben Fehler; es sieht aus wie es auf diese Linie zeigt https://github.com/mscdex/ssh2-streams/blob/master/lib/sftp.js#L1583

Ist es möglich zu erreichen?

+0

versuchen 'readdirAsync'? Wenn 'PromisifyAll' angegeben wird, fügt bluebird für jede Methode eine Async-Version hinzu. –

+0

Es gibt mir einen Fehler als: 'Unhandled Ablehnung TypeError: cObj.readdirAsync ist keine Funktion' – namit

+0

@TuanAnhTran jedoch; 'console.log (cObj.readdir);' gibt mir '[Funktion]'; während 'console.log (cObj.readdirAsync);' gibt mir 'undefined' – namit

Antwort

0

Ich habe ein ssh2-promise npm-Paket für die Verpflegung derselben erstellt. Ich habe SSH2 und SFTP-Artikel angekündigt. Hoffentlich hilft es