herokuへデプロイしたとき、DBに接続されません。。
以下エラーについて何が原因かわかりますでしょうか?
エラーログ
errorlog
1MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017 2 3at new MongooseServerSelectionError (/app/node_modules/mongoose/lib/error/serverSelection.js:24:11) 4at NativeConnection.Connection.openUri (/app/node_modules/mongoose/lib/connection.js:823:32) 5at Mongoose.connect (/app/node_modules/mongoose/lib/index.js:333:15) 6at Object.<anonymous> (/app/main.js:38:10) 7at Module._compile (internal/modules/cjs/loader.js:1133:30) 8at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10) 9at Module.load (internal/modules/cjs/loader.js:977:32) 10at Function.Module._load (internal/modules/cjs/loader.js:877:14) 11at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) 12at internal/main/run_main_module.js:18:47 { 13reason: TopologyDescription { 14type: 'Single', 15setName: null, 16maxSetVersion: null, 17maxElectionId: null, 18servers: Map { 'localhost:27017' => [ServerDescription] }, 19stale: false, 20compatible: true, 21compatibilityError: null, 22logicalSessionTimeoutMinutes: null, 23heartbeatFrequencyMS: 10000, 24localThresholdMS: 15, 25commonWireVersion: null 26}, 27[Symbol(mongoErrorContextSymbol)]: {} 28} 29 302020-05-11T04:24:22.264630+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=POST path="/contact" host=glacial-temple-91497.herokuapp.com request_id=47cc1b63-36ca-4130-a743-af0f69df82b8 fwd="106.159.27.203" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https 31MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
サーバー接続情報
javascript
1const 2 port = 3000, 3 express = require("express"), 4 app = express(), 5 router = express.Router(), 6 cookieParser = require('cookie-parser'), 7 expressSession = require('express-session'), 8 dotenv = require('dotenv'), 9 ; 10 11dotenv.config(); 12 13 14//【db】 15const mongoose = require("mongoose"); 16mongoose.Promise = global.Promise; 17mongoose.connect( 18 process.env.MONGODB_URI || "mongodb://localhost:27017/hoge_db", 19 { useNewUrlParser: true, useUnifiedTopology: true }, 20 error => 21 { 22 if (error) 23 { 24 console.log(error); 25 } else 26 { 27 console.log("cannot conect DB") 28 } 29 }); 30 31const db = mongoose.connection; 32db.once("open", () => { console.log("MongoDBに接続完了") }); 33 34 35app.use("/", router); 36 37//cookie,Session,flash 38router.use(cookieParser("secret_passcode")); 39router.use(expressSession({ 40 secret: "secret_passcode", 41 cookie: { 42 maxAge: 4000000 43 }, 44 resave: false, 45 saveUninitialized: false 46})); 47 48router.use(passport.initialize()); 49router.use(passport.session()); 50 51 52 53 54app.set("port", process.env.PORT || 3000); 55const server = app.listen(app.get("port"), () => 56{ 57 console.log(`Saever running at http://localhost:${app.get("port")}`) 58});
環境とバージョン
node.js,mongoDB
package.json
1{ 2 "name": "recipe", 3 "version": "1.0.0", 4 "description": hoge.com", 5 "main": "main.js", 6 "scripts": { 7 "test": "echo \"Error: no test specified\" && exit 1", 8 "start": "node main.js" 9 }, 10 "author": "name", 11 "license": "ISC", 12 "dependencies": { 13 "body-parser": "^1.19.0", 14 "connect-flash": "^0.1.1", 15 "cookie-parser": "^1.4.5", 16 "dotenv": "^8.2.0", 17 "ejs": "^3.1.2", 18 "express": "^4.17.1", 19 "express-partials": "^0.3.0", 20 "express-session": "^1.17.1", 21 "express-validator": "^6.4.1", 22 "http-status-codes": "^1.4.0", 23 "method-override": "^3.0.0", 24 "mongodb": "^3.5.7", 25 "mongoose": "^5.9.12", 26 "passport": "^0.4.1", 27 "passport-local-mongoose": "^6.0.1" 28 } 29} 30
試したこと
以下記事を見てdotenvをインストールし、設定したが解消されませんでした。
https://teratail.com/questions/225516
※もし、.envが不要であれば無視していただいて結構です。
//.envファイルの記述 MONGODB_URI=mongodb://localhost:27017/hoge_db
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 14:20