Прежде чем написать этот вопрос, я читал другие о почти той же ошибке, но эти вопросы относятся к 2013-2014 годам, а решения не работают, Я использую ElementaryOS (Ubuntu 14.04).Ошибка Connect-mongo: не удается найти модуль 'mongodb/node_modules/bson'
Я хочу управлять сеансами в приложении nodejs, которые будут загружены на сервер OpenShift, поэтому после поиска альтернатив хранения сеансов я нашел connect-mongo
, который, как я читаю, хранит сеанс в коллекции mongodb. Я также использую express-sessions
, вещь, когда я запустить приложение, я получил сообщение об ошибке:
[email protected]:~/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)
Я новичок с сеансами и хранение их, так что я действительно не знаю, что происходит, и как правильно настройте хранилище сеансов. Мне действительно нужна помощь, я буду так благодарен, если кто-нибудь скажет мне, как это исправить. Вот мои package.json
зависимости:
"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"
}
А вот мой configurate.js
файл, установка на промежуточное программное, маршруты и подключения к БД:
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);
}
И мой файл server.js
, если вам это нужно:
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);