2016-04-26 3 views
0

Прежде чем написать этот вопрос, я читал другие о почти той же ошибке, но эти вопросы относятся к 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); 

ответ

-1

Привет, пожалуйста, выполните следующие шаги, чтобы повторно установить узловые модули.

  • НОЙ установка узла-Gyp -g
  • кэша
  • НПХ чистый
  • ет -rf node_modules
  • НОЙ установки

Дайте нам знать, если эту работу для вас.

1

Я думаю, вы не установили этот модуль.

npm install connect-mongodb-session --save 

Это решит проблему.

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