出现这些错误
MongoError:服务器实例池已损坏
MongoError:拓扑已被破坏
如果有人会知道是什么原因导致此模块发生这些错误以及如何解决它,我很乐意。
MongoError:服务器实例池已损坏 在basicWriteValidations(/home/jnyheim/var/www/node_modules/mongodb-core/lib/topologies/server.js:698:41) 在Server.update(/home/jnyheim/var/www/node_modules/mongodb-core/lib/topologies/server.js:834:16) 在Server.update(/home/jnyheim/var/www/node_modules/mongodb/lib/topologies/topology_base.js:326:25) 在updateDocuments(/home/jnyheim/var/www/node_modules/mongodb/lib/operations/collection_ops.js:1344:19) 在/home/jnyheim/var/www/node_modules/mongodb/lib/utils.js:437:24 在新的Promise() 在executeOperation(/home/jnyheim/var/www/node_modules/mongodb/lib/utils.js:432:10) 在Collection.update(/home/jnyheim/var/www/node_modules/mongodb/lib/collection.js:829:10) 在withCallback.collectionReady.then.collection(/home/jnyheim/var/www/node_modules/connect-mongo/src/index.js:244:48) 在 在process._tickCallback(内部/进程/next_tick.js:188:7) MongoError:拓扑已被破坏 在nextFunction(/home/jnyheim/var/www/node_modules/mongodb-core/lib/cursor.js:603:27) 在Cursor.next(/home/jnyheim/var/www/node_modules/mongodb-core/lib/cursor.js:824:3) 在Cursor._next(/home/jnyheim/var/www/node_modules/mongodb/lib/cursor.js:211:36) 在nextObject(/home/jnyheim/var/www/node_modules/mongodb/lib/operations/cursor_ops.js:186:10) 在下一个(/home/jnyheim/var/www/node_modules/mongodb/lib/operations/cursor_ops.js:165:3) 在executeOperation(/home/jnyheim/var/www/node_modules/mongodb/lib/utils.js:420:24) 在Cursor.next(/home/jnyheim/var/www/node_modules/mongodb/lib/cursor.js:253:10) 在findOne(/home/jnyheim/var/www/node_modules/mongodb/lib/operations/collection_ops.js:542:10) 在/home/jnyheim/var/www/node_modules/mongodb/lib/utils.js:437:24 在新的Promise() 在executeOperation(/home/jnyheim/var/www/node_modules/mongodb/lib/utils.js:432:10) 在Collection.findOne(/home/jnyheim/var/www/node_modules/mongodb/lib/collection.js:1021:10) 在withCallback.collectionReady.then.collection(/home/jnyheim/var/www/node_modules/connect-mongo/src/index.js:192:46)
我发现它是由此引起的
const MongoStore = require('connect-mongo')(session);
商店:新的MongoStore({mongooseConnection:mongoose.connection})
app.use(session({
secret: "mylittle34secret",
cookie: { maxAge: (1 * 60 * 60 * 1000) },
saveUninitialized: false,
resave: false,
proxy: true,
store: new MongoStore({mongooseConnection: mongoose.connection}),
}));
完整代码:
'use strict'
// Dependencies
const expressValidator = require('express-validator');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const passport = require('passport');
const mongoose = require('mongoose');
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const exphbs = require('express-handlebars');
const paypal = require('paypal-rest-sdk');
const flash = require('connect-flash');
const path = require('path');
mongoose.connect('mongodb://localhost:27017/app', {useNewUrlParser: true, socketTimeoutMS: 0, keepAlive: true, reconnectTries: 30}, (err, db)=>{
if(err){
console.log('## INCOMMING MONGO ERROR ##' + err + '## MONGO ERROR END ##');
throw err;
}else{
console.log("--> succesfully connected to Database!");
};
//db.once('')
});
const paypal_config = require('./lib/helpers/paypal_configuration.json');
paypal.configure(paypal_config);
const app = express()
// Root Routes
const _shop = require('./route/shop');
const _index = require('./route/index');
const _about = require('./route/about');
const _session = require('./route/session');
const _projects = require('./route/projects');
// View Engine
app.engine('.hbs', exphbs({
extname: '.hbs',
defaultLayout:'layout',
layoutsDir: __dirname + '/views/layouts/'
}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
// BodyParser Middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
// Set Static Folder | Public Folder
app.use(express.static(path.join(__dirname, 'public')));
// Express Session
app.use(session({
secret: "mylittle34secret",
cookie: { maxAge: (1 * 60 * 60 * 1000) },
saveUninitialized: false,
resave: false,
proxy: true,
store: new MongoStore({mongooseConnection: mongoose.connection}),
}));
// Passport init
app.use(passport.initialize());
app.use(passport.session());
// Express Body Validator
app.use(expressValidator({
errorFormatter: function(param, msg, value) {
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while(namespace.length) {
formParam += '[' + namespace.shift() + ']';
}
return {
param : formParam,
msg : msg,
value : value
};
}
}));
// Connect Flash
app.use(flash());
// Vars for HTML doc
app.use((req, res, next)=>{
res.locals.success_msg = req.flash('success_msg');
res.locals.warning_msg = req.flash('warning_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.info_msg = req.flash('info_msg');
res.locals.error = req.flash('error');
res.locals.user = req.user || null;
res.locals.session = req.session;
next();
});
// root/routes
app.use('/', _index); // x/
app.use('/shop', _shop); // x/shop
app.use('/about', _about); // x/about
app.use('/session', _session); // x/session
app.use('/projects', _projects); // x/projects
// Server
app.set('port', (process.env.PORT || 80));
app.listen(app.get('port'), ()=>{
console.log('--> HTTP Server started on port %s', app.get('port'));
});
<3