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

Posted

技术标签:

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

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

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

node_modules/redis/dist/index

但实际上它就在这里:

node_modules/@types/redis"

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

【问题讨论】:

我最终复制了“node_modules/@types/redis”中的文件内容并将它们粘贴到“node_modules/redis/dist/index”中的文件末尾。这使问题消失了,但我确信这不是可持续的解决方案。我希望有更好的解决方案。 【参考方案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` );

【讨论】:

以上是关于模块“redis”没有导出成员“RedisClient”的主要内容,如果未能解决你的问题,请参考以下文章

没有导出的成员/节点模块

打字稿模块没有导出的成员 - 反应

Vue / Typescript,得到模块'“*.vue”'没有导出成员

TS2614:模块没有导出成员“NextHandleFunction”

模块没有导出成员'IonicNativePlugin',Ionic2 for facebook

Vue 3 + TypeScript TS2614:模块 '"*.vue"' 没有导出成员