我正在尝试使用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
主机已经设置好了,但是这个错误似乎在配置部分中,但是我似乎并没有确切的原因
答案 0 :(得分:0)
您在“ config”变量中的“主机”属性未定义。尝试使用硬编码值而不是env var,如果可行,则意味着进程无法读取env var,这可能是由于R不导入dotenv模块而引起的。