-
Expressセッションミドルウェアの設定: Expressでは、セッション管理に"express-session"というミドルウェアを使用します。まずは、このミドルウェアをインストールし、アプリケーションに統合します。
npm install express-session
アプリケーションのエントリーポイント(通常はindex.jsまたはapp.js)で、以下のようにセッションミドルウェアを設定します。
const express = require('express'); const session = require('express-session'); const app = express(); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: true })); // ルートハンドラーや他のミドルウェアの後にこの設定を追加します
これにより、セッションが有効になり、
req.session
オブジェクトが使用できるようになります。 -
セッションの使用例: セッションは、ユーザーの状態やデータを保持するための便利な方法です。以下は、セッションを使用してユーザーの名前を保存する例です。
app.get('/login', (req, res) => { // ユーザーがログインしたと仮定して、セッションに名前を保存します req.session.username = 'John'; res.send('Logged in successfully'); }); app.get('/profile', (req, res) => { // セッションから名前を取得して表示します const username = req.session.username; res.send(`Welcome, ${username}`); });
上記の例では、
/login
エンドポイントでユーザー名をセッションに保存し、/profile
エンドポイントでセッションから名前を取得して表示しています。 -
エラー処理: もしもセッションが未定義のままである場合、エラーハンドリングを行うことも重要です。以下は、エラーハンドリングの例です。
app.get('/profile', (req, res, next) => { if (!req.session.username) { const error = new Error('Not logged in'); error.status = 401; return next(error); } const username = req.session.username; res.send(`Welcome, ${username}`); }); // エラーハンドラー app.use((err, req, res, next) => { res.status(err.status || 500); res.send(err.message); });
セッションが未定義の場合、401エラーを作成し、エラーハンドラーに渡しています。エラーハンドラーでは、適切なステータスコードとエラーメッセージを返すように設定されています。
これらの手順とコード例を参考にすると、ExpressとNode.jsでの"req.session undefined"エラーを解決することができます。セッションの設定や使用方法に関する理解を深めることで、エラーの原因を特定し、効果的なエラーハンドリングを実装できます。