Wyszukiwanie w witrynie

TYPESCRIPT - obsługa express-session


Mam problem z ustawieniem express-session w moim projekcie TS. Kiedy robię jego podstawową konfigurację (sposób JS), tworzę MW, który jest wywoływany przy każdym żądaniu API, w ten sposób mogę tworzyć lub nie nową tablicę użytkowników w mojej sesji.

import {Request, Response, NextFunction} from 'express'

module.exports = (req: Request, res: Response, next: NextFunction) => {
    console.log('session checker : ', req.session)
    if (!req.session){
        req.session.user = []
        console.log('session initialized')
    }
    next();
}

Walka toczy się na .user, TS wyświetla mi ten błąd

Property 'user' does not exist on type 'never'.

Masz jakiś pomysł, jak to przezwyciężyć?

Z góry dziękuję,

Paweł

Odpowiedź #1

Zgodnie z kodem źródłowym typów dla express-session, musisz samodzielnie zdefiniować właściwości dostępne w SessionData (gdzieś w swoim kodzie):

    /**
     * This interface allows you to declare additional properties on your session
object using [declaration merging]
(https://www.typescriptlang.org/docs/handbook/declaration-merging.html).
     *
     * @example
     * declare module 'express-session' {
     *     interface SessionData {
     *         views: number;
     *     }
     * }
     *
     */
    interface SessionData {
        cookie: Cookie;
    }

Proponuję, żebyś to zrobił, ponieważ lepiej wiesz, jakie właściwości ma użytkownik:

np. (być może masz inne dane) w pliku index.d.ts w twoim projekcie:

     declare module 'express-session' {
         interface SessionData {
             user: string;
         }
     }

Powiązane artykuły