2016-12-29 51 views
1

我創建了一個MEAN Stack應用程序,最近我加入了passportjs,起初當我的Mongo數據庫是1GB(它有超過300萬個條目)時,一切都很好,但最近的數據庫增長到高達2GB,當護照被稱爲1/3倍灑在控制檯此錯誤:PassportJS events.js:160 //未處理'錯誤'連接超時

(calling passport) 
POST /login 200 3600.661 ms - 492 // successful login 
GET /uploads/defaultm4.jpg 304 1.295 ms - - 
(calling passport) 
POST /login 200 3334.007 ms - 492 // successful login 
(calling passport) 
events.js:160 
     throw er; // Unhandled 'error' event 
    ^

Error: connection timeout 
    at Db.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules\m                            ongoose\lib\drivers\node-mongodb-native\connection.js:169:17) 
    at emitTwo (events.js:106:13) 
    at Db.emit (events.js:191:7) 
    at Server.listener (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules\                            mongodb\lib\db.js:1786:14) 
    at emitOne (events.js:96:13) 
    at Server.emit (events.js:188:7) 
    at Server.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modul                            es\mongodb\lib\server.js:274:14) 
    at emitOne (events.js:96:13) 
    at Server.emit (events.js:188:7) 
    at Pool.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules                            \mongodb-core\lib\topologies\server.js:334:12) 
    at emitOne (events.js:96:13) 
    at Pool.emit (events.js:188:7) 
    at Connection.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_m                            odules\mongodb-core\lib\connection\pool.js:270:12) 
    at Connection.g (events.js:291:16) 
    at emitTwo (events.js:106:13) 
    at Connection.emit (events.js:191:7) 
    at Socket.<anonymous> (C:\Users\Andre\Desktop\bootcamp\voting-app\node_modul                            es\mongodb-core\lib\connection\connection.js:183:10) 
    at Socket.g (events.js:291:16) 
    at emitNone (events.js:86:13) 
    at Socket.emit (events.js:185:7) 
    at Socket._onTimeout (net.js:339:8) 
    at ontimeout (timers.js:365:14) 

npm ERR! Windows_NT 10.0.14393 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Andre\\AppData\\                            Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start" 
npm ERR! node v6.9.2 
npm ERR! npm v3.9.0 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] start: `node ./bin/www` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] start script 'node ./bin/www'. 
npm ERR! Make sure you have the latest version of node.js and npm installed. 
npm ERR! If you do, this is most likely a problem with the votingApp package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  node ./bin/www 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs votingApp 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls votingApp 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  C:\Users\Andre\Desktop\bootcamp\voting-app\npm-debug.log 

這是我App.js:

var express = require('express'); 
    var session = require('express-session') 
    var http = require('http'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var cookieParser = require('cookie-parser'); 
    var bodyParser = require('body-parser'); 
    var app = express(); 

    var mongoose = require('mongoose'); 
    var passport = require('passport'); 

    var options = {server: {socketOptions: {connectionTimeoutMS: 120000,socketTimeoutMS: 120000}}}; 


    mongoose.connect('mongodb://localhost:27017/mean-database',options, function(err,db){ 
     if (!err){ 
      console.log('Connected to /mean-database!'); 
     } else{ 
      console.dir(err); //failed to connect 
     } 
    }); 


    require('./models/citizens'); 
    require('./config/passport'); 
    require('./models/Candidate'); 
    require('./models/Province'); 
    require('./models/Parties'); 

    var routes = require('./routes/index'); 

    var citizens = require('./routes/citizens'); 
    var candidates = require('./routes/candidates'); 
    var provinces = require('./routes/provinces'); 
    var graphics = require('./routes/graphics'); 
    var parties = require('./routes/parties'); 
    // view engine setup 
    app.set('views', path.join(__dirname, 'views')); 
    app.set('view engine', 'ejs'); 

    app.use(favicon(__dirname + '/public/favicon.ico')); 

    app.use(logger('dev')); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    app.use(cookieParser()); 
    app.use(express.static(path.join(__dirname, 'public'))); 
    app.use(passport.initialize()); 



    app.use('/', routes); 
    app.use('/users', citizens); 
    app.use('/api', candidates); 
    app.use('/api', provinces); 
    app.use('/api', graphics); 
    app.use('/api', citizens); 
    app.use('/api', parties); 
    // catch 404 and forward to error handler 
    app.use(function(req, res, next) { 
     var err = new Error('Not Found'); 
     err.status = 404; 
     next(err); 
    }); 

    // error handlers 

    // development error handler 
    // will print stacktrace 
    if (app.get('env') === 'development') { 
     app.use(function(err, req, res, next) { 
      res.status(err.status || 500); 
      res.render('error', { 
       message: err.message, 
       error: err 
      }); 
     }); 
    } 

    // production error handler 
    // no stacktraces leaked to user 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: {} 
     }); 
    }); 


    module.exports = app; 

這是我的「開始」腳本:

var debug = require('debug')('votingApp'); 
var app = require('../app'); 


app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

這是我passport.js文件:

var express = require('express'); 
var passport = require('passport'); 
var LocalStrategy = require('passport-local').Strategy; 
var mongoose = require('mongoose'); 
var User = mongoose.model('Citizen'); 

passport.use(new LocalStrategy(
    function(electoral_code, password, done) { 
    User.findOne({ electoral_code: electoral_code }, function (err, user) { 
     if (err) { return done(err); } 
     if (!user) { 
     return done(null, false, { message: 'Incorrect username.' }); 
     } 
     if (!user.validPassword(password)) { 
     return done(null, false, { message: 'Incorrect password.' }); 
     } 
     return done(null, user); 
    }).maxTime(20000); 
    } 
)); 

我已經嘗試過:重新安裝節點,更新所有節點模塊,清理緩存,重新安裝所有模塊

編輯:也加入NPM-的debug.log:

0 info it worked if it ends with ok 
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe', 
1 verbose cli 'C:\\Users\\Andre\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js', 
1 verbose cli 'start' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose run-script [ 'prestart', 'start', 'poststart' ] 
5 info lifecycle [email protected]~prestart: [email protected] 
6 silly lifecycle [email protected]~prestart: no script for prestart, continuing 
7 info lifecycle [email protected]~start: [email protected] 
8 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true 
9 verbose lifecycle [email protected]~start: PATH: C:\Users\Andre\AppData\Roaming\npm\node_modules\npm\bin\node-gyp-bin;C:\Users\Andre\Desktop\bootcamp\voting-app\node_modules\.bin;C:\Program Files\nodejs;C:\Users\Andre\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\Andre\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Client;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit;C:\Program Files\Microsoft SQL Server\110\Tools\Binn;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files (x86)\Skype\Phone;C:\Program Files (x86)\OpenSSH\bin;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\git\cmd;C:\Program Files\Git\cmd;C:\Program Files\nodejs;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\Andre\AppData\Local\Microsoft\WindowsApps;C:\Users\Andre\AppData\Local\atom\bin;C:\Users\Andre\AppData\Roaming\npm;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl 
10 verbose lifecycle [email protected]~start: CWD: C:\Users\Andre\Desktop\bootcamp\voting-app 
11 silly lifecycle [email protected]~start: Args: [ '/d /s /c', 'node ./bin/www' ] 
12 silly lifecycle [email protected]~start: Returned: code: 1 signal: null 
13 info lifecycle [email protected]~start: Failed to exec start script 
14 verbose stack Error: [email protected] start: `node ./bin/www` 
14 verbose stack Exit status 1 
14 verbose stack  at EventEmitter.<anonymous> (C:\Users\Andre\AppData\Roaming\npm\node_modules\npm\lib\utils\lifecycle.js:245:16) 
14 verbose stack  at emitTwo (events.js:106:13) 
14 verbose stack  at EventEmitter.emit (events.js:191:7) 
14 verbose stack  at ChildProcess.<anonymous> (C:\Users\Andre\AppData\Roaming\npm\node_modules\npm\lib\utils\spawn.js:24:14) 
14 verbose stack  at emitTwo (events.js:106:13) 
14 verbose stack  at ChildProcess.emit (events.js:191:7) 
14 verbose stack  at maybeClose (internal/child_process.js:877:16) 
14 verbose stack  at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) 
15 verbose pkgid [email protected] 
16 verbose cwd C:\Users\Andre\Desktop\bootcamp\voting-app 
17 error Windows_NT 10.0.14393 
18 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Andre\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start" 
19 error node v6.9.2 
20 error npm v3.9.0 
21 error code ELIFECYCLE 
22 error [email protected] start: `node ./bin/www` 
22 error Exit status 1 
23 error Failed at the [email protected] start script 'node ./bin/www'. 
23 error Make sure you have the latest version of node.js and npm installed. 
23 error If you do, this is most likely a problem with the votingApp package, 
23 error not with npm itself. 
23 error Tell the author that this fails on your system: 
23 error  node ./bin/www 
23 error You can get information on how to open an issue for this project with: 
23 error  npm bugs votingApp 
23 error Or if that isn't available, you can get their info via: 
23 error  npm owner ls votingApp 
23 error There is likely additional logging output above. 
24 verbose exit [ 1, true ] 

回答

1

(發佈代表OP)的

db.citizens.ensureIndex({ username: 1, password: 1 }) 

我通過索引數據庫蒙哥解決了這個問題