【问题标题】:Module '"redis"' has no exported member 'RedisClient'模块“redis”没有导出成员“RedisClient”
【发布时间】:2022-01-12 00:18:00
【问题描述】:

我正在使用 Typescript 创建一个多节点 Express/Socket.io 服务器,并且我正在尝试从 redis 导入 RedisClient,但我无法让它工作,因为我收到了错误

模块“redis”没有导出成员“RedisClient”

它似乎正在尝试从表单中检索它

node_modules/redis/dist/index

但实际上它就在这里:

node_modules/@types/redis"

我怎样才能让它从正确的地方导入?

【问题讨论】:

  • 我最终复制了“node_modules/@types/redis”中的文件内容并将它们粘贴到“node_modules/redis/dist/index”中的文件末尾。这使问题消失了,但我确信这不是可持续的解决方案。我希望有更好的解决方案。

标签: express redis socket.io node-redis


【解决方案1】:

貌似Redis包最近正式更新到v4,引入了一些breaking changes,包括一些界面变化。

我建议暂时使用 v3,直到所有依赖项(包括 @types/redis)都正确更新:

npm install redis@3

【讨论】:

    【解决方案2】:

    我通过插入修复它

    导出类型 RedisClient = ReturnType;

    进入“node_modules/redis/dist/index.d.ts”

    【讨论】:

      【解决方案3】:

      检查了一段时间后,我意识到事情发生了变化,文档指出您现在不需要使用 RedisClient。你现在需要使用:

      import { createClient } from "redis";
      

      这就是现在的样子:

      const pubClient = createClient({ url: `redis://<path to redis>:6379` });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-20
        • 2017-05-07
        • 2017-08-18
        • 1970-01-01
        • 2017-09-09
        • 2021-12-19
        • 2017-03-27
        相关资源
        最近更新 更多