使用tunnel-ssh npm发出通过mongoose通过ssh连接到mongo的问题

问题描述 投票:0回答:1

我正在尝试使用猫鼬通过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

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

node.js mongodb mongoose ssh ssh-tunnel
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.