Before of write this question I was reading other ones about almost the same error but that questions are from 2013-2014, and the solutions doesn't work, I'm using ElementaryOS (Ubuntu 14.04).
I want to manage sessions on my nodejs app which will be uploaded to an OpenShift server, so after searching for session storage alternatives I found connect-mongo
which as I read, stores the session on a mongodb collection. I am also using express-sessions
, the thing is, when I run the app I got this error message:
hugo@HugoG405:~/Documents/ic/server$ node server
module.js:341
throw err;
^
Error: Cannot find module 'mongodb/node_modules/bson'
at Function.Module._resolveFilename (module.js:339:15)
at Function.Module._load (module.js:290:25)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (/home/hugo/Documents/ic/server/node_modules/express-sessions/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js:8:16)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (/home/hugo/Documents/ic/server/node_modules/express-sessions/node_modules/mongoose/lib/types/objectid.js:18:16)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
I'm new with sessions and storage them, so I really don't know what is happening and how correctly set up my session storage. I really need some help, I'll be so thankful if somebody can tell me how to fix this. Here are my package.json
dependencies:
"engines": {
"node": ">= 0.6.0",
"npm": ">= 1.0.0"
},
"dependencies": {
"body-parser": "^1.15.0",
"connect-mongo": "^1.1.0",
"express": "^4.13.4",
"express-sessions": "^1.0.5",
"helmet": "^1.3.0",
"method-override": "^2.3.5",
"mongoose": "^4.4.12",
"pug": "^2.0.0-alpha6"
},
"private": true,
"main": "server.js",
"devDependencies": {
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.0",
"gulp-concat": "^2.6.0",
"gulp-image": "^1.3.1",
"gulp-jshint": "^2.0.0",
"gulp-rename": "^1.2.2",
"gulp-sass": "^2.3.1",
"gulp-sourcemaps": "^2.0.0-alpha",
"gulp-uglify": "^1.5.3"
}
And here's my configurate.js
file, which setup the middlewares, routes and db connections:
var express = require('express'),
bodyParser = require('body-parser'),
helmet = require('helmet'),
methodOverride = require('method-override'),
sessions = require('express-sessions'),
mongoose = require('mongoose'),
MongoStore = require('connect-mongo/es5')(sessions);
// Rutas de la plataforma
var toHome = require('./routes/Home'),
toVideos = require('./routes/Video'),
toUsers = require('./routes/User'),
toCourses = require('./routes/Course'),
toRedirects = require('./routes/Redirects');
var connection_string = '127.0.0.1:27017/e3';
if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
process.env.OPENSHIFT_APP_NAME;
}
mongoose.connect("mongodb://"+connection_string);
var db = mongoose.connection;
db.on('error', function(){
console.error.bind(console, 'Conection error to db:');
});
db.on('open', function() {
console.log('Conected to mongodb');
});
module.exports = function(app){
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.use(methodOverride('_method'));
app.use(express.static('public'));
app.use(helmet());
app.set('view engine','pug');
app.use(sessions({
secret:"23Ir892UdRHoi1rN891",
resave:false,
saveUninitialized:false,
store: new MongoStore({
url:connection_string,
ttl: 24 * 60 * 60
})
}));
// Routing
app.use('/',toRedirects);
app.use('/platform',toHome);
//app.use('/platform/video',toVideos);
//app.use('/platform/profile', toUsers);
//app.use('/platform/course', toCourses);
}
And my server.js
file if you need it:
var express = require('express'),
app = express(),
models = require('./config/models'),
Configure = require('./config/configure');
Configure(app);
// Página principal
app.get('/', function(req,res){
res.render('index');
});
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
app.listen(server_port,server_ip_address);
I think you didn't installed this module.
npm install connect-mongodb-session --save
This will resolve the issue.
Hi Please follow below steps to re install node modules.
Let us know if its work for you.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.