2016-01-14 14 views
2

我正在运行流行的NPM软件包tunnel-ssh的教程中的基本示例。这里是代码:使用tunnel-ssh时'TypeError:Object不是函数'

var tunnel = require('tunnel-ssh'); 
var config = { 
    username:'root', 
    password:'secret', 
    host:'remote.mysql.server.com', 
    port:3306 
} 

tunnel(config, function(e, sshTunnel){ 
    //Now, you should be able to connect to the tunnel via localhost:3336. 
}); 

我正在运行与我自己的数据库的凭据当然。然而,当我运行它时,我总是得到这个错误:

TypeError: object is not a function 

任何人都知道发生了什么事?

+0

你在隧道回调中没有做任何事情吗? – Paul

+0

@Paul我试着用一个简单的console.log语句在回调中运行它。仍然得到错误。 – frogbandit

+0

你有没有尝试过从cli w/o使用软件包来做它?即ssh [email protected] -L 3306:localhost:3306?可能是因为错误的证书或者其他东西(比如,如果你想用mysql凭证登录,并且ssh用户有不同的凭证,或者mysql用户没有启用ssh),远程方拒绝连接。 – Paul

回答

1
var tunnel = require('tunnel-ssh'); 

var config = {username: 'vagrant',host: '192.168.33.2', port:3307, dstPort:3306 } 

tunnel.tunnel(config, function(e, sshTunnel){}); 

我在192.168.33.2加入我的钥匙和目的端口转发3306到我的本地端口3307

我对RPEL节点版本v0.12.4运行此。它的工作。

+0

仍然没有运气。我定义了dstPort,dstHost,privateKey ...但仍然得到相同的编译错误。 – frogbandit

+1

用上面的代码再试一次。 –

+0

谢谢,它解决了错误!但是,只是想指出,我必须将dstPort修改为默认的MongoDB端口(dstPort:'27017'),如文档:https://www.npmjs.com/package/tunnel-ssh中所述。有点时髦,但嘿,它的作品。 – frogbandit

相关问题