初めに
Express + TypeScriptで開発を行う際に、sessionの設定方法がJavascriptと異なっていたため備忘録として投稿する。
環境
■ Nodeのバージョン
14.14.0
■ 使用OS
MacOS Big Sur:バージョン11.6
■ expressのバージョン
4.16.1
■ @types/express-sessionのバージョン
1.17.4
■ express-sessionのバージョン
1.17.2
設定方法
使用するパッケージをインストールする。
JavaScriptでは、express-sessionのみインストールしていたが、TypeScriptで使用するには@types/express-sessionが必要。
npm i express-session @types/express-session
app.tsに下記の記載を行う。
var session = require('express-session');
declare module 'express-session' {
interface SessionData {
user: any,
like_arr: any
}
}
var session_opt = {
secret: 'secret',
cookie: {maxAge: 60 * 60 * 1000}
};
app.use(session(session_opt));
アンビエント宣言内に、使用したいオブジェクトを追加することでTypeScriptにも対応できる。
session_optという変数には、cookieの有効時間等の情報を格納する。
使用例
import express from 'express';
const router = express.Router();
router.post('/sign_in', (req: express.Request , res: express.Response, next: express.NextFunction) => {
(async () => {
req.session.user = result;
req.session.like_arr = like_arr;
req.session.save();
res.redirect('/');
});
})();
});
reqの型は、インポートしたexpressのRequestに設定することでsessionを使用可能。