typescript - 在 express-ws 应用程序和打字稿中使用 Sessions
问题描述
我正在尝试使用 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
要求第一个参数是 type express.Request
。而实际上express.Request
是 的孩子http.IncomingMessage
。
那么如何将父类类型转换为子类?
知道如何解决这个问题吗?express-session
或如何在打字稿中使用会话
如果我更换
import * as session from 'express-session';
和
const session = require('express-session');
这是工作。但是如何使用import
和类型检查呢?
解决方案
试试这样做
let expressWsApp = expressWs(expressApp, webServer, {
wsOptions : {
verifyClient : (info, done) => {
info.req.res = {};
sessionParser(info.req, info.req.res, () => {
done(info.req.session.userId);
});
}
}
}).app
推荐阅读
- html - 垂直对齐弹性项目
- javascript - React:如何更新数组映射中的对象
- php - 比较当前数组元素与前一个数组元素
- python - 在 scipy.optimize. 中使用回调函数在一定时间后停止进程
- windows - 如何使用 Windows 批处理脚本识别操作系统是 64 位还是 32 位?
- php - 使用第一个变量 isset()
- html - 使用原始 html 表单获取 Django CSRF 错误
- symfony - 无法使用 webpack-encore 编译材料组件
- php - 如何在某个命名空间中打开 .json 文件
- amazon-cloudfront - CloudFront Origin 基本授权