簡體   English   中英

無法將Mongodb連接到Node.js:throw er; //未處理的“錯誤”事件^錯誤:無法連接到[undefined:27017]

[英]Can't connect Mongodb to Node.js : throw er; // Unhandled 'error' event ^ Error: failed to connect to [undefined:27017]

我正在嘗試將Mongoose與我的Node.js連接,但是它總是顯示此錯誤。 我正在按照教程創建身份驗證系統。 編寫server.js文件並嘗試解決route.js中的問題后,出現了錯誤,我不知道為什么,請提供幫助。

這是我的代碼和錯誤:

server.js

 // server.js // set up ====================================================================== // get all the tools we need var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); var morgan = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var configDB = require('./config/database.js'); // configuration =============================================================== mongoose.connect(configDB.url); // connect to our database // require('./config/passport')(passport); // pass passport for configuration // set up our express application app.use(morgan('dev')); // log every request to the console app.use(cookieParser()); // read cookies (needed for auth) app.use(bodyParser()); // get information from html forms app.set('view engine', 'ejs'); // set up ejs for templating // required for passport app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use(flash()); // use connect-flash for flash messages stored in session // routes ====================================================================== require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport // launch ====================================================================== app.listen(port); console.log('The magic happens on port ' + port); 

route.js:

 module.exports = function(app, passport) { //... }; 

package.json

 { "name": "node-authentication", "main": "server.js", "dependencies" : { "express" : "~4.0.0", "ejs" : "~0.8.5", "mongoose" : "~3.8.1", "passport" : "~0.1.17", "passport-local" : "~0.1.6", "passport-facebook" : "~1.0.2", "passport-twitter" : "~1.0.2", "passport-google-oauth" : "~0.1.5", "connect-flash" : "~0.1.1", "bcrypt-nodejs" : "latest", "morgan": "~1.0.0", "body-parser": "~1.0.0", "cookie-parser": "~1.0.0", "method-override": "~1.0.0", "express-session": "~1.0.0" } } 
database.js

 // config/database.js module.exports = { 'url' : 'your-settings-here' // looks like mongodb://<user>:<pass>@mongo.onmodulus.net:27017/Mikha4ot }; 

錯誤

 The magic happens on port 8080 events.js:141 throw er; // Unhandled 'error' event ^ Error: failed to connect to [undefined:27017] at null.<anonymous> (/Applications/XAMPP/xamppfiles/htdocs/ouestcharlie/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:556:25) at emitThree (events.js:97:13) at emit (events.js:175:7) at null.<anonymous> (/Applications/XAMPP/xamppfiles/htdocs/ouestcharlie/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:156:15) at emitTwo (events.js:87:13) at emit (events.js:172:7) at Socket.<anonymous> (/Applications/XAMPP/xamppfiles/htdocs/ouestcharlie/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:534:10) at emitOne (events.js:77:13) at Socket.emit (events.js:169:7) at connectErrorNT (net.js:996:8) at nextTickCallbackWith2Args (node.js:442:9) at process._tickCallback (node.js:356:17) 

Mongoose.connect()需要以下格式的參數:

"mongodb://<hostname>/<databasename>"

相反,它將獲取您在database.js中配置的內容,如下所示:

"your-settings-here"

我猜那是錯的。 只需在database.js中填寫一個體面的連接URL,例如:“ mongodb:// localhost / my-test-db”(請替換為正確的值),該錯誤就會消失。

這是連接在默認端口(27017)上本地運行的myapp數據庫的最低要求。 如果本地連接失敗,請嘗試使用127.0.0.1代替localhost。 有時,更改本地主機名時可能會出現問題。 [來源: http//mongoosejs.com/docs/connections.html]

我有同樣的錯誤。 我重新安裝了mongoDB,但無法正常工作。

我通過使用以下URL連接到本地主機解決了我的問題。 mongoose.connect('mongodb://127.0.0.1:27017/database-name') ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM