2015-04-28 2 views
-1

У меня есть следующий код: NodeJS2 строки NodeJS сбоя приложения на mongoose.connect() при попытке подключиться к базе данных mongolab MongoDB

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://dev:[email protected]:31632/mongodev'); 

И на запуская его с node server.js, он вешает трубку для несколько секунд и бросает следующее:

C:\Users\dev\work\code\local\nodejsplayground\restwithmongo\nod 
dules\mongoose\node_modules\mongodb\lib\server.js:228 
     process.nextTick(function() { throw err; }) 
              ^
Error 
    at Object.<anonymous> (C:\Users\dev\work\code\local\nodejsp 
round\restwithmongo\node_modules\mongoose\node_modules\mongodb\node_modules\mong 
core\lib\error.js:42:24) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (C:\Users\dev\work\code\local\nodejsp 
round\restwithmongo\node_modules\mongoose\node_modules\mongodb\node_modules\mong 
core\index.js:2:17) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 

Я пингуется сервер с помощью консоли с помощью этого:

ping ds031632.mongolab.com 

Я попытался установить mongodb с установщиком окон, и он все еще не работает

+0

Добавьте обработчик ошибок, вы получите гораздо более полезный вывод ошибок. –

+0

с попыткой поймать? или вы можете объяснить? –

+0

нет, обработчик ошибок mongoose connect. читать документы. –

ответ

1

Эта ошибка возникает, когда есть ошибка, связанная с mongodb без вызова обратного вызова ошибки. Чтобы исправить эту ошибку (и получить фактическую ошибку), добавьте обратный вызов к методу .connect или привяжите событие ошибки.

mongoose.connect(config.mongodb, function (err) { 
    if (err) { 
    console.log(err); 
    } 
}); 

или

mongoose.connect(config.mongodb); 

var db = mongoose.connection; 

db.on('error', function (err) { 
    console.log('mongodb connection error: %s', err); 
    process.exit(); 
}); 
db.once('open', function() { 
    console.log('Successfully connected to mongodb'); 
    app.emit('dbopen'); 
}); 

Если вы обнаружите, что ничего не происходит, и он просто висит, подождите примерно 30 секунд, и он будет тайм-аут, который просто означает, что мангуст не может подключиться к MongoDB, что может быть вызвано очень большим количеством различных вещей, в основном связанных с конфигурацией сети/dns/firewall/server.

+0

Спасибо, это было очень полезный. Запуск его на виртуальной машине в другой сети, и он работает нормально. –

+1

Скорее всего, ваша сеть просто не разрешала этот исходящий порт. Моя сеть делает то же самое, я должен был запросить его, чтобы он был открыт. с туннелем ssh. –

Смежные вопросы