くすりぃのブログ

エンジニアになりたい情報系学生

mongooseでmondo atlasに接続する際のエラー:EREFUSED

MongoDBを操作するためのnpmモジュールであるmongooseを用いてmongo atlasに接続しようと試みた.

const mongoose = require("mongoose");
dbUrl= "mongodb+srv://<username>:<password>@cluster0.th6mh4o.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0"

mongoose.connect(dbUrl, { useNewUrlParser: true })
    .then(() => {
        console.log('MongoDBコネクションOK!!');
    })
    .catch(err => {
        console.log("MongoDBコネクションエラー!!!'");
        console.log(err);
    });

*1

するとこんなエラーが...

MongoDBコネクションエラー!!!'
Error: querySrv EREFUSED _mongodb._tcp.cluster0.th6mh4o.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:275:17) {
  errno: undefined,
  code: 'EREFUSED',
  syscall: 'querySrv',
  hostname: '_mongodb._tcp.cluster0.th6mh4o.mongodb.net'
}

ググると,stackoverflowに同じ問題を持つ方が!

stackoverflow.com

回答によると,接続文字列(このコード内でのdbUrl)をmongo atlasからコピーしてくる際に,「Node.js 2.2.12 以降の古いもの」をコピーしてくるようにとのこと.

mondodb atlasのconect画面
この文字列にすると接続できた. MongoDB によると、Mongoose が原因で SRV が機能していない可能性があるそう.

*1:実装の際はdbUrlの値は.envファイルに入れています.,はそれぞれmongo atlasのプロジェクトで作成したユーザーネームとパスワードを入力しています.

はじめまして テックブログを書きます

( ´ ▽ ` )ノ [笑][こんにちは]

自己紹介

僕は某大学で情報工学を専攻している学生です!くすりとでも呼んでくださいm(__)m

大学ではアカペラサークルに所属していて、9バンド組んで、歌ったり、声でベースをしたり、ボイパをしたりしています!(キャパがやばやばなのは内緒|・ω・`)コッショリ) サークルの日々の業務の効率化をPythonで行ったり、PA操作の勉強をしたり、新しい技術に挑戦したり、、、 楽しく過ごしてます!

今は、webアプリ開発の基礎を学んでいて、今度はサークルの効率化をwebで行おうと思っています。

作ったアプリの紹介や、プログラムを書いていく中でぶつかった問題、その解消方法などを発信していきます。 未来の自分に世の中の誰かの役に立てれば幸いだなと思っております。

ブログの書き方も、技術の知識もまだまだですが、ぜひ子供の成長を見守る心持ちで見てください!!!

これからよろしくお願いします!