node.js - 解决了。问答:MongoDB MongoNetworkError:无法连接到服务器。服务器是远程服务器
问题描述
mongoose 连接到 MongoDB 失败。但是 mongo 命令行可以连接到 MongoDB。
代码:
var mongoose = require('mongoose');
mongoose.connect('mongodb://192.168.92.131/test', {useNewUrlParser: true});
结果:
(node:6559) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [192.168.92.131:27017] on first connect [Error:
connect EHOSTDOWN 192.168.92.131:27017 - Local (192.168.92.1:60222)
at internalConnect (net.js:835:16)
at defaultTriggerAsyncIdScope (internal/async_hooks.js:301:12)
at net.js:926:9
at processTicksAndRejections
(内部/进程/task_queues.js:75:11){
name: 'MongoNetworkError', errorLabels: [Array],
[Symbol(mongoErrorContextSymbol)]: {}
我的 MongoDB 安装在运行 Ubuntu OS 的虚拟机中。我搜索了一个解决方案,但我没有找到一个干净的解决方案。
我找到了一个可行的解决方案来分享:
故障排除过程
运行 mongo 命令行。连接正常。
MongoDB 默认没有访问控制(用户/密码)。所以我的代码没问题。
知识产权问题?Mongodb 没有在 192.168.92.131 上启动
谷歌:使用外部ip启动mongodb 找到解决方法:https ://www.shellhacks.com/mongodb-allow-remote-access/
ether@ubuntu_ether:~$ sudo nano /etc/mongod.conf
没有外部 IP 地址。所以在mongod.conf中添加ip地址
…....
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1, 192.168.92.131
ether@ubuntu_ether:~$ sudo service mongod restart
再次运行: var mongoose = require('mongoose'); mongoose.connect('mongodb://192.168.92.131/test', {useNewUrlParser: true});
好的!!!
解决方案
推荐阅读
- css - 如何在reactjs中添加适用于材料表的样式
- c# - 如何撤消浮点数中的数字
- asp.net-mvc - Asp.NET MVC 中 DbContext 实体框架的单例模式
- c# - 使用 TZ/LANG 环境变量进行本地化在 ASP.NET Core Debian 映像中有效,但在 Alpine 中无效
- c# - 将死信消息移回处理主题的最简单方法?
- hyperlink - 将链接复制到私人浏览器时出错
- c - 将文件内容复制到结构
- php - 我在 php 中使用 multi_query() 错了吗?
- microsoft-graph-api - 收到的不仅仅是已删除事件的 ID?
- python - 如何在某些坐标上获取像素值