通过mongoose的ssh连接mongo的tunnel-ssh npm问题

时间:2019-07-09 11:39:00

标签: node.js mongodb mongoose ssh ssh-tunnel

我正在尝试使用mongoose通过ssh隧道建立与远程mongo服务器的连接

实现代码为:

import tunnel from 'tunnel-ssh';

const config = {
    username: 'username',
    Password: 'password',
    host: process.env.SSH_SERVER, //192.168.9.104
    port: 22,
    dstHost: process.env.DESTINATION_SERVER, //192.168.9.104
    dstPort: process.env.DESTINATION_PORT, //27017
    localHost: '127.0.0.1',
    localPort: 27017
};

这是我在连接如下时创建的配置:

class DB {
    initDB() {
        tunnel(config, (error, server) => {
            if (error) {
                console.log('SSH connection error: ' + error);
            }
            const url = 'mongodb://' + process.env.MONGO_URL; //localhost:27017/DBname
            mongoose.connect(url, { useNewUrlParser: true });
            mongoose.plugin(toJson);
            mongoose.plugin(setProperties);

            var db = mongoose.connection;
            db.on('error', console.error.bind(console, 'DB connection error:'));
            db.once('open', function() {
                console.log('DB connection successful');
            });
        });
    }
}

调用函数initDB()时会弹出以下错误消息

SSH connection error: ConfigError: host not set

events.js:183
      throw er; // Unhandled 'error' event
      ^
ConfigError: host not set

主机已经设置好了,但是这个错误似乎在配置部分中,但是我似乎并没有确切的原因

1 个答案:

答案 0 :(得分:0)

您在“ config”变量中的“主机”属性未定义。尝试使用硬编码值而不是env var,如果可行,则意味着进程无法读取env var,这可能是由于R不导入dotenv模块而引起的。