2016-04-26 3 views
0

Bevor diese Frage geschrieben wurde, habe ich andere über fast den gleichen Fehler gelesen, aber diese Fragen sind von 2013-2014, und die Lösungen funktionieren nicht, Ich benutze ElementaryOS (Ubuntu 14.04).Connect-mongo Fehler: Modul 'mongodb/node_modules/bson' kann nicht gefunden werden

Ich möchte Sitzungen auf meiner Nodejs App verwalten, die auf einen OpenShift-Server hochgeladen werden, so nach der Suche nach Sitzungsspeicheralternativen habe ich connect-mongo gefunden, die die Sitzung auf einer Mongodb-Sammlung speichert. Ich bin auch express-sessions verwenden, die Sache ist, wenn ich laufe die App ich diese Fehlermeldung bekommen:

[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) 

Ich bin neu mit Sitzungen und Speicherung sie, so dass ich weiß wirklich nicht, was passiert ist und wie meinen Sitzungsspeicher richtig eingerichtet. Ich brauche wirklich Hilfe, ich werde so dankbar sein, wenn mir jemand sagen kann, wie ich das beheben kann. Hier sind meine package.json Abhängigkeiten:

"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" 
    } 

Und hier ist meine configurate.js Datei, die Setup die Middleware, Routen und DB-Verbindungen:

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); 
} 

Und meine server.js Datei, wenn Sie es brauchen:

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); 

Antwort

-1

Hallo Bitte befolgen Sie die nachfolgenden Schritte, um die Knotenmodule erneut zu installieren.

  • npm Knoten-gyp installieren -g
  • npm Cache sauber
  • rm -rf node_modules
  • npm

Sie uns wissen, ob seine Arbeit installieren lassen.

1

Ich denke, Sie haben dieses Modul nicht installiert.

npm install connect-mongodb-session --save 

Dies wird das Problem beheben.

Verwandte Themen