私はMongoDB 4.0.6を初めて使用し、Node/Express.jsを使用して自分のWebサイトに実装しようとしましたが、mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main
に接続しようとすると、次のエラーが発生します。
{エラー:querySrv EREFUSED _mongodb._tcp.main-03xkr.mongodb.net at QueryReqWrap.onresolve [as oncomplete](dns.js:199:19)errno: 'EREFUSED'、code: 'EREFUSED'、syscall: 'querySrv' 、ホスト名: '_mongodb._tcp.main-03xkr.mongodb.net'}
私はmongodb://localhost:27017/main
に接続しようとしましたが、これはdoesが機能しているようです。
関連するコードは次のとおりです。
require('dotenv').config();
const mongoose = require('mongoose');
// Database
const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
const localURI = 'mongodb://localhost:27017/main';
var Project = require('./models/project');
mongoose.connect(uri, { useNewUrlParser: true });
const db = mongoose.connection;
db.once('open', () => console.log('Successfully connected to MongoDB'));
db.on('error', (e) => console.log(e));
// Routes
app.get('/', (req, res) => {
Project.find({}, (e, projects) => {
if (e) console.log(e);
res.render('home.ejs', {
projects: projects
});
});
});
だから誰もこのエラーを修正する方法を知っていますか、そしておそらくここで何が起こっているのかを説明していますか?
接続文字列にundefined
が含まれています。これがタイプミスかどうかはわかりません。しかし、変更してみてください
const uri = `mongodb+srv://undefined:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
に
const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
私はプロジェクトにMongoAtlasを使用し、その文字列(未定義のユーザーを除く)は正しいように見えます。
私たちのケースでは、アンチウイルス/ファイアウォールがブロックしています、
ウイルス対策/ファイアウォールを無効にして、もう一度確認してください。うまくいくことを願っています。