2017-05-19 4 views
0

FTP 요구 사항에 https://github.com/mscdex/ssh2을 사용하고 있습니다. 나는 다음 시도 코드 언급 : 같은Bluehird로 노드 SSH2 SFTP를 알리십시오

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

위가 주어진다 오류 : 위의 오류에서

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 

을; 이 줄을 가리키는 것 같습니다. https://github.com/mscdex/ssh2-streams/blob/master/lib/sftp.js#L1583

달성 할 수 있습니까?

+0

'readdirAsync'를 시도해보십시오. 'promisifyAll' 일 때, bluebird는 각 메소드에 대해 Async 버젼을 추가 할 것입니다. –

+0

다음과 같이 오류가 발생합니다 :'처리되지 않은 거부 TypeError : cObj.readdirAsync가 함수가 아닙니다' – namit

+0

@TuanAnhTran; 'console.log (cObj.readdir);'내게 [Function]'; 'console.log (cObj.readdirAsync);'나를'undefined'라고합니다. – namit

답변

0

동일한 음식을 제공하기 위해 ssh2-promise npm 패키지를 만들었습니다. 나는 SSH2와 SFTP 항목을 약속했다. 다행히 도움이 될 것입니다.