我正在尝试使用Typescript使用express
和express-ws
构建节点服务器。
我想在我的应用中使用会话。所以我用过express-session
。
下面是伪代码:
import * as session from 'express-session';
import * as express from 'express'
import * as expressWs from 'express-ws'
const sessionParser = session({
saveUninitialized: false,
secret: '$eCuRiTy',
resave: false
});
let expressWsApp = expressWs(expressApp, webServer, {
wsOptions : {
verifyClient : (info, done) => {
sessionParser(info.req, {}, () => {
done(info.req.session.userId);
});
}
}
}).app
我遇到以下错误。
Argument of type 'IncomingMessage' is not assignable to parameter of type 'Request' in
sessionParser(info.req, {}, () => {...
现在的问题是,sessionParser
要求第一个参数的类型为express.Request
。实际上express.Request
是http.IncomingMessage
的子代。
那么我如何将父类转换为子类?
任何想法如何解决这个问题?
或如何在打字稿中与express-session
一起使用会话
如果我替换
import * as session from 'express-session';
与
const session = require('express-session');
正在工作。但是如何使用import
并进行类型检查呢?
答案 0 :(得分:0)
只需尝试这样做
let expressWsApp = expressWs(expressApp, webServer, {
wsOptions : {
verifyClient : (info, done) => {
info.req.res = {};
sessionParser(info.req, info.req.res, () => {
done(info.req.session.userId);
});
}
}
}).app