چگونه از express-mysql-session در پروژههای تایپاسکریپت استفاده کنیم؟


من در تلاش هستم از express-session و express-mysql-session در یک پروژه تایپ اسکریپت استفاده کنم. در اینجا بخش مربوط از کد من آمده است:

import * as express from "express";
import * as expressSession from "express-session";
import * as expressMySqlSession from "express-mysql-session";

this.express = express();
const sessionStore = new expressMySqlSession(sessionStoreConfig, this.dbConnection);
const sessionHandler = expressSession({
                ...,
                store: sessionStore
            });
this.express.use(sessionHandler);

این کامپایل نمیشود زیرا گزینه store از نوع expressSession.Store | expressSession.MemoryStore | undefined است در حالی که sessionStore از نوع MySQLStore است. من چه کار اشتباهی انجام میدهم؟

با احترام

پاسخ شماره ۱

این را امتحان کن:

import * as express        from "express";
import * as expressSession from "express-session";
import expressMySqlSession from "express-mysql-session";

const MySQLStore   = expressMySqlSession(expressSession);
const sessionStore = new MySQLStore(sessionStoreConfig, this.dbConnection);
...

پاسخ شماره ۲

با هر دو express-session، express-mysql-session و @types/express-mysql-session که به عنوان وابستگیها فهرست شدهاند:

نسخه فعلی انواع (از حدود دو سال پیش) نسخه قدیمیتری از express-mysql-session را دنبال میکند، جایی که صادرات پیشفرض همان کلاس است. خوشبختانه، در این کتابخانه برای این نسخه قدیمی، سازگاری بازگشتی وجود دارد، بنابراین میتوانید مستقیماً آن را نمونهسازی کنید:

import MySQLSessionStore from "express-mysql-session";

const store = new MySQLSessionStore({...});

و کتابخانه مسئول وارد کردن وابستگی express-session برای شما خواهد بود.

کد هرگز دروغ نمیگوید!