无法使用Node.js MongoClient连接到MongoDB

zy1mlcev  于 2023-08-04  发布在  Go
关注(0)|答案(2)|浏览(125)

我在尝试使用mongodb驱动程序从Node.js应用程序连接到MongoDB时遇到了一个问题。
我在本地机器上运行了一个MongoDB服务器,我可以使用MongoDB Compass和VS Code扩展成功连接到它。
但是,当我尝试从Node.js应用程序连接时,我遇到了一个错误。

const { MongoClient } = require('mongodb');

const uri = 'mongodb://localhost:27017/';
const client = new MongoClient(uri);

client.connect((err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('Connected to MongoDB');

  // ... continue with my code
});

字符串
我收到的错误消息是:

MongoServerSelectionError: connect ECONNREFUSED ::1:27017
  // rest of the error details...


我尝试从Node.js应用程序连接到MongoDB。
我已经检查了以下内容:

  • MongoDB服务器在我的本地机器上运行,我可以使用MongoDB Compass和VS Code扩展连接。
  • 我已经使用npm安装了mongodb包,我也尝试了不同版本的包。
  • 连接到我的MongoDB服务器不需要身份验证。
  • 我也尝试在安装过程中指定mongodb包的版本,但问题仍然存在。

为什么我无法从Node.js应用程序连接到MongoDB?我的代码或配置中缺少了什么吗?

798qvoo8

798qvoo81#

尝试将URI中的localhost替换为显式locsl IPv4 127.0.0.1

const uri = 'mongodb://127.0.0.1:27017/';

字符串
正如Node的mongodb驱动程序所解释的那样:
注意:解决DNS连接问题
Node.js 18将默认DNS解析顺序从始终优先考虑ipv4更改为DNS提供商返回的顺序。在某些环境中,这可能会导致localhost解析为ipv6地址而不是ipv4地址,从而导致无法连接到服务器。
这可以通过以下方式解决:[...]

  • 使用主机127.0.0.1代替localhost
eimct9ow

eimct9ow2#

嗨,大家好,谢谢大家的有益的意见,这个问题的答案是在两个步骤

  1. localhost别名解析为IPv6 address::1,而不是127.0.0.1。但是,net.ipv6默认为false。对此解决方案是
    A.将它们设置在mongod.conf文件中
ipv6: true
  bindIpAll: true

字符串
或者是

ipv6: true
  bindIp: localhost


启动Mongo服务器时将它们添加到命令中
第一个月
1.我没有一个mongod.conf文件,所以我不得不写一个,这是它应该看起来像

# mongod.conf

# Where to store data.
storage:
  dbPath: C:\data\db

# IPv6 support.
net:
  ipv6: true
  bindIpAll: true

# Port to listen on (default is 27017).
# port: 27017

# Enable/disable journaling.
# storage:
#   journal:
#     enabled: true

# Set log files.
# systemLog:
#   destination: file
#   path: C:\data\log\mongod.log

# Replica Set Options.
# replication:
#   replSetName: "rs0"

# Authentication Options.
# security:
#   authorization: enabled

# More options and configurations can be added as needed.


前两个和已启用,其他是可选的
我也会提到这个问题,因为它就像我的Can't connect to MongoDB 6.0 Server locally using Nodejs driver

相关问题