2017-05-05 2 views
1

Ich bin neu bei ExpressJS (nur 3 Monate) und ich versuche, ein Projekt zu machen, um das zu üben, was ich bisher gelernt habe.Wie kann ich ein Modul für die ExpressJS-Sitzung schreiben?

Ich habe versucht, ein Modul zu schreiben, um Express-Sitzung zu behandeln. Aber es scheint nicht zu funktionieren - kein Fehler und keine Antwort.

Der Code ist:

var express = require("express"); 
var session = require('express-session'); 
var MySQLStore = require('express-mysql-session')(session); 

// MySQL Session Configuration 
const mySQLSessionConfiguration = { 
    host: 'localhost', 
    port: 1234, 
    user: 'thisIsNotMyRealUsername', 
    password: 'neitherThisIsMyRealPassword', 
    database: 'aDatabase' 
}; 

// Create Session 
module.exports = function(){ 
    return (session({ 
    store: new MySQLStore(mySQLSessionConfiguration), 
    secret: 'LOL', 
    resave: true, 
    saveUninitialized: true 
    })); 
}; 

und in meiner index.js Datei:

app.use(require("./modules/session.js")); 

// Der Code funktioniert gut, wenn es diese direkt in dem index.js schreiben, aber ich mag schreibe ein Modul - ich will lernen.

Fehler in CLI: keine Fehler im Browser: nichts aber nichts. Ich meine keine Antwort. Hält an

Was ist falsch hier. Jede Hilfe wird geschätzt. Dank

Antwort

0

Ich habe das Problem behoben, indem ich die "App" direkt in das Modul übergab, anstatt die Sitzung vom Modul zurückzugeben.

Der feste Code sieht wie folgt aus:

// var express = require("express"); -- not required at all 
var session = require('express-session'); 
var MySQLStore = require('express-mysql-session')(session); 

// MySQL Session Configuration 
const mySQLSessionConfiguration = { 
    host: 'localhost', 
    port: 1234, 
    user: 'thisIsNotMyRealUsername', 
    password: 'neitherThisIsMyRealPassword', 
    database: 'aDatabase' 
}; 

// Create Session 
module.exports = function (app){ // app received :D 
    app.use(session({    // app.use instead of return 
    store: new MySQLStore(mySQLSessionConfiguration), 
    secret: 'LOL', 
    resave: true, 
    saveUninitialized: true 
    })); 
}; 

und in index.js

var alpha = require("./modules/session.js")(app); 
0

Ich habe Ihr Szenario auf einer Beispielanwendung replizieren und schrieb den folgenden Code in "session.js" Datei

var clientsession = require('client-sessions'); 

module.exports = function(){ 
    return (clientsession({ 
    cookieName: 'session', 
    secret: 'secret', 
    duration: 30 * 60 * 1000, 
    activeDuration: 5 * 60 * 1000, 
    })); 
}; 

dann in server.js ich es wie folgt verwendet werden:

app.use(require('./session.js')); 

Es funktioniert absolut finden. Können Sie Ihr Fehlerprotokoll für weitere Details freigeben?

+0

Hey, Vielen Dank für Ihre Zeit. Ich habe das Problem behoben. Anstatt das Sitzungsobjekt zurückzugeben. Ich habe die "App" direkt in das Modul eingegeben und dann "app.use (alle sessionbezogenen Sachen, die ich zurückgebe)" verwendet; – Faheem

0
var cookieParser = require('cookie-parser');  
var session = require('express-session'); 
var MySQLStore = require('express-mysql-session')(session); 

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : '< MySQL username >', 
    password : '< MySQL password >', 
    database : '<your database name>' 
}); 

connection.connect(); 

app.use(cookieParser()); 
app.use(session({ 
    secret: 'supersecret', 
    resave: true, 
    saveUninitialized: true, 
    store: new mySQLStore(mysqlConnection: mysql.connection), 
    cookie: { maxAge: 1000 } //whatever you'd like 
})); 

Dies ist, wie ich es normalerweise in Express, mit Express-Sitzung mache.

+0

Danke für die Antwort. Ich benutze den gleichen Weg. Aber ich wollte nur ein Modul machen, damit ich meine Konzepte klären kann - ich bin neu auszudrücken. Das Problem wurde behoben. – Faheem

Verwandte Themen