我正在尝试在Typescript项目中使用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
。
我做错了什么?
此致
答案 0 :(得分:1)
试试这个:
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);
...
答案 1 :(得分:0)
import * as express from 'express';
import * as session from 'express-session';
const MySQLStore = require('express-mysql-session')(session);
import pool from './database';
const sessionStore = new MySQLStore({
schema: {
tableName: 'mire_sessions',
columnNames: {
session_id: 'session_id',
expires: 'expires',
data: 'data'
}
}
}, pool);
const app = express();
app.use(session({
secret: 'z',
resave: false,
saveUninitialized: true,
store: sessionStore
}))
此代码对我有用。但是我不知道为什么
答案 2 :(得分:0)
将express-session
,express-mysql-session
和@types/express-mysql-session
都列为依赖项:
Current version of the types(大约两年前)跟踪express-mysql-session
的旧版本,其中默认导出为类。幸运的是,此较早版本的库中有一些backwards-compatibility,因此您可以直接实例化它:
import MySQLSessionStore from "express-mysql-session";
const store = new MySQLSessionStore({...});
该库将为您处理importing the express-session
dependency。
代码永不说谎!