2016-04-13 2 views
0

時々、私のnodejsアプリケーション - - express v4.12.2とexpress-session v1.13.0モジュールを使用して、次のTypeError例外とクラッシュがスローされます。これはエラーになりますなぜexpress-sessionの有効期限オブジェクトが正しいタイプではありませんか?

/app/node_modules/express-session/node_modules/cookie/index.js:136 
    if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); 
                ^

TypeError: opt.expires.toUTCString is not a function 
    at Object.serialize (/app/node_modules/express-session/node_modules/cookie/index.js:136:56) 
    at setcookie (/app/node_modules/express-session/index.js:576:21) 
    at ServerResponse.<anonymous> (/app/node_modules/express-session/index.js:204:7) 
    at ServerResponse.writeHead (/app/node_modules/on-headers/index.js:46:16) 
    at ServerResponse._implicitHeader (_http_server.js:157:8) 
    at ServerResponse.res.write (/app/node_modules/compression/index.js:82:14) 
    at ReadStream.ondata (_stream_readable.js:529:20) 
    at emitOne (events.js:90:13) 
    at ReadStream.emit (events.js:182:7) 
    at readableAddChunk (_stream_readable.js:147:16) 
    at ReadStream.Readable.push (_stream_readable.js:111:10) 
    at onread (fs.js:1822:12) 
    at FSReqWrap.wrapper [as oncomplete] (fs.js:614:17) 

私はわかりませんtoUTCString()は関数なので、アプリケーションのテストから

opt.expiresない限り。Dateオブジェクトではない)、また、これはときに、セッションがタイムアウトするこの問題が発生した場合、私は疑問に思って、opt.expiresを伴うように見えるので。ここで

は、私がセッションを設定しています方法です:

var express = require('express'); 
var expressSession = require('express-session'); 
... 
var app = express(); 
... 
app.use(expressSession({ 
    key: 'application.sid', 
    secret: 'some.secret.string', 
    cookie: { 
     maxAge: 60 * 60 * 1000, 
     expires: 60 * 60 * 1000 
    }, 
    store: new mongoStore({ 
     mongooseConnection: mongoose.connection, 
     collection: 'sessions' 
    }), 
    saveUninitialized: true, 
    rolling: true, 
    resave: true, 
    secure: true 
})); 

私の目標は、ユーザーがアプリケーションを使用し続けた場合、セッションの有効期限が延長を取得することです。

これを設定した方法が間違っているのですか、特定のバージョンのモジュールの組み合わせで修正されるいくつかのバグがありますか?

答えて

1

req.session.cookie.expiresは数字でなくてはなりません。

各セッションには固有のCookieオブジェクトが付いています。これにより、訪問者ごとにセッションCookieを変更できます。

var hour = 3600000; 
req.session.cookie.expires = new Date(Date.now() + hour); 
req.session.cookie.maxAge = hour; 
関連する問題