reactjs - 在遵循 React、Express 和 Typescript 教程时尝试添加 & { session : Express. Session } 以键入 MyContext 时出现 "No exported member"错误

标签 reactjs typescript express

我正在深入研究 React、Express 和 Typescript 教程,我对此还很陌生。尝试更好地理解设置自定义类型的工作原理,这就是我目前所拥有的。

在 types.ts 文件中:

import { Request, Response } from "express";
import { Redis } from "ioredis";
//import express from "express"; // adding this did not help
//import session from "express-session"; // adding this did not help

export type MyContext = {
    req: Request; // & { session: Express.Session }; // this is my troublesome line
    redis: Redis;
    res: Response;
};

尝试添加时

& { session: Express.Session }

我收到错误:

any Namespace 'global.Express' has no exported member 'Session'.ts(2694)

已对 devDepency 和依赖项的版本进行了比较,以便它们是相同的。尝试最新版本没有任何变化。

devDependencies:
    "@types/express": "^4.17.7",
    "@types/express-session": "^1.17.0",
    ...

dependencies:
    "express": "^4.17.1",
    "express-session": "^1.17.1",
     ...

我尝试过的事情:

  1. 正如代码中的注释所示,不同的导入语句,例如express和/或session。

  2. 将 package.json 中的 strictNullChecks 从 true 更改为 false。

  3. 最新版本的express、express-session、@types/express 和@types/express-session。

  4. 将类型更改为接口(interface)。

  5. 在发布此内容之前仔细检查了类似的问题(我已经在 SO 和 Google 上查看过这里)。

  6. 将 GitHub 上教程的最终代码与我自己的代码进行比较(据我所知,它们是相同的)。

最佳答案

您收到的错误告诉您它正在 global.Express.Session 中查找类型。这是因为您没有名为 Express 的导入,因此它试图在全局范围内找到它。当然,这是不存在的!

这对我有用,假设 Session 类型应该来自 express-session 库:

import { Request, Response } from "express";
import { Redis } from "ioredis";
import session from "express-session";

export type MyContext = {
    req: Request & { session: session.Session };
    redis: Redis;
    res: Response;
};

关于reactjs - 在遵循 React、Express 和 Typescript 教程时尝试添加 & { session : Express. Session } 以键入 MyContext 时出现 "No exported member"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66523196/

相关文章:

javascript - 如何使用 Webpack 2 热重载 Sass?

javascript - PIXI.RenderTexture 无渲染

jQuery 插件不适用于 Angular 5(插件不是函数)

javascript - 使用 Node.js 将 URL 字符串发送到其他脚本

reactjs - 在 create-react-app 中高效导入多个相似的 svg 源?

reactjs - 为什么重新渲染后样式仍然保留?

javascript - 获取类的公共(public)属性而不创建类的实例?

javascript - 将组件名称从 HTML 传递到组件

node.js - Express.js+蒙戈: TypeError: Cannot read property then of undefined

mysql - 如何将sql server连接到app.js文件?