2017-05-05 46 views
1

我是ExpressJS的新手(僅僅3個月),我正在嘗試做一個項目,以獲得我迄今爲止所學的知識。如何編寫模塊來處理ExpressJS會話?

我試過寫一個模塊來處理快速會話。但它似乎並不奏效 - 沒有錯誤也沒有反應。

的代碼是:

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

,在我index.js文件:

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

//代碼工作正常,如果我寫這直接index.js裏面,但我想寫一個模塊 - 我想學習。

CLI中的錯誤:無 瀏覽器錯誤:無,但無。我的意思是既沒有迴應。一直在等待

這裏有什麼問題。任何幫助將不勝感激。由於

回答

0

我通過直接將「應用程序」傳遞給模塊而不是從模塊返回會話來解決了問題。

固定的代碼看起來是這樣的:

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

和index.js

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

我複製一個示例應用程序,您的方案,並寫了下面的代碼在「session.js」文件

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

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

然後在server.js我用它如下:

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

它的工作絕對找不到。 你能分享你的錯誤日誌瞭解更多詳情嗎?

+0

嘿,感謝您的時間。我已經解決了這個問題。而不是返回會話對象。我已將「應用程序」直接傳遞到模塊中,然後使用「app.use(所有會話相關的東西,我正在返回);」 – 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 
})); 

這就是我通常用express-session來表達的方式。

+0

感謝您的回答。我用同樣的方式。但我只是想製作一個模塊,以便我可以清理我的概念 - 我是新來表達的。 問題已解決。 – Faheem