节点应用程序在启动时抛出异常
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/aadak/Workspace/node/ticket-status-tacker/node_modules/mongoose/lib/connection.js:846:32)
at /Users/aadak/Workspace/node/ticket-status-tacker/node_modules/mongoose/lib/index.js:351:10
at /Users/aadak/Workspace/node/ticket-status-tacker/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
我可以看到 mongo 正在运行
aadak@aadak-a01 mongo-backup % brew services list
Name Status User File
mongodb-community started aadak ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
Run Code Online (Sandbox Code Playgroud)
我的 mongo uri 定义为
"mongoURI": "mongodb://localhost:27017/ticketDB"
Run Code Online (Sandbox Code Playgroud)
连接到 mongo 的代码
const mongoose = require("mongoose");
const config = require("config");
const dbURI = config.get("mongoURI");
const logger = require('./winston');
const connectDB = async () => {
try {
await mongoose.connect(dbURI, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
});
logger.info("mongo db connected");
} catch (err) {
console.error(err);
// exit process with failure.
process.exit(1);
}
};
module.exports = connectDB;
Run Code Online (Sandbox Code Playgroud)
我正在使用节点v17.0.1。Node v17 更喜欢 IPv6 地址而不是 IPv4。但 mongo 默认配置为 ipv4。
IPv4配置
net:
port: 27017
bindIp: 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
需要将其更改为:
net:
ipv6: true
port: 27017
bindIpAll: true
OSX path : /usr/local/etc/mongod.conf
Ubuntu Path: /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
然后重启mongo。
https://dba.stackexchange.com/questions/173781/bind-mongodb-to-ipv4-as-well-as-ipv6/302609#302609
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |