2017-05-19 11 views
0

私のFTP要件にはhttps://github.com/mscdex/ssh2を使用しています。 Iコードに言及以下試み: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アイテムを約束しました。うまくいけば、それは役に立ちます

関連する問題