2015-09-02 3 views
2

Попытка установить MEAN сервер, после этого урока: https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/Узел не подключен к Монго более чем один раз

С помощью этого мерзавца: https://github.com/Hitman666/MEAN_MVC_3rdTutorial

Первый раз, когда я подключиться к базе данных, он отлично работает. После CTRL + C, а затем снова запустите «узел-сервер», я получаю эту ошибку:

c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ connection \ base.js: 246 throw message;^TypeError: Невозможно прочитать длину свойства undefined в processResults (c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ db.js: 1581: 31) в c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ db.js: 1619: 20 в c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ db.js: 1157: 7 в c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ db.js: 1890: 9 на сервере.Base._callHandler (c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ connection \ base.js: 448: 41) при c : \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ connection \ server.js: 481: 18 в MongoReply.parseBody (c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ answers \ mongo_reply .js: 68: 5) при нулевом значении. (c: \ mean2 \ node_modules \ mongoose \ node_modules \ mongodb \ lib \ mongodb \ connection \ server.js: 439: 20) в emit (events.js: 107: 17) в нуле. (С: \ mean2 \ node_modules \ мангуст \ node_modules \ MongoDB \ Lib \ MongoDB \ связь \ connection_pool.js: 201: 13)

Связанные блоки кода:

development.js:

var port = 1337; 

module.exports = { 
    port: port, 
    db: 'mongodb://localhost/todos' 
}; 

mongoose.js:

var config = require('./config'), 
mongoose = require('mongoose'); 

module.exports = function() { 
    var db = mongoose.connect(config.db); 
    return db; 
}; 

config.js:

module.exports = require('./env/' + process.env.NODE_ENV + '.js'); 

server.js:

process.env.NODE_ENV = process.env.NODE_ENV || 'development'; 

var config = require('./config/config'), 
    mongoose = require('./config/mongoose'), 
    express = require('./config/express'), 

var db = mongoose(), 
    app = express(); 

app.listen(config.port); 

module.exports = app; 
console.log(process.env.NODE_ENV + ' server running at http://localhost:' + config.port); 

Также стоит отметить, если я db.dropDatabase(), затем "сервер узла" снова, он отлично работает.

+0

Вы установили что-нибудь странное в вашем MongoDB? Как maxClients: 1 или что-то подобное? В противном случае: что произойдет, если вы «killall node» и повторите попытку? – Dodekeract

+0

Я не задал ничего на моем MongoDB. Попытка рассчитать материал через учебные пособия, поэтому я не изменил никаких настроек. Я также должен добавить, что я на Windows 8.1. –

+0

Я хотел добавить еще один ответ. Я сделал «taskkill/IM node.exe», и он сказал, что процесс не найден. –

ответ

2

Проблема заключалась в том, что «НПМ установки мангуста» не установить правильную версию Мангуста. Как только я отредактировал package.json к самой последней версии, все сработало нормально.

0

Я использовал этот небольшой фрагмент кода, чтобы закрыть подключение к MongoDB перед завершением приложения:

process.on('SIGINT', function() { 
    mongoose.close(function(){ 
     process.exit(); 
    }); 
}); 
+0

Я сделал это и добавил console.log, чтобы убедиться, что он выполняет функцию; однако, я все еще получаю ту же проблему. –

+0

Я не перепутал это через некоторое время, но использует '.disconnect' вместо' .close' исправить его? Я помню, что мне пришлось играть с ними ... но прошло некоторое время с тех пор, как я был в этой части кода. (Извините ...) –

+0

Так что я играл с ним довольно много и пробовал много, много вариантов, и вот что я придумал. Когда я выведу часть «process.on ...», он подключится, а затем отключится. Я могу тогда «сервер узла» успешно (однако он сразу отключается).Функция закрытия запускает консольные команды, поэтому я не знаю, почему она не работает с CTRL + C. –

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