类静态端“typeof _Readable”错误地扩展了基类静态端“typeof Readable”

Posted

技术标签:

【中文标题】类静态端“typeof _Readable”错误地扩展了基类静态端“typeof Readable”【英文标题】:Class static side 'typeof _Readable' incorrectly extends base class static side 'typeof Readable' 【发布时间】:2020-09-08 20:23:32 【问题描述】:

我正在使用 node/typescript 为 Discord 开发一个机器人。当我在我的源代码上运行 typescript 编译器时,我收到了这个错误:

node_modules/@types/readable-stream/index.d.ts(13,15): error TS2417: Class static side 'typeof _Readable' incorrectly extends base class static side 'typeof Readable'.
  The types of 'Stream.Readable.Writable' are incompatible between these types.
    Type 'typeof _Readable.Writable' is not assignable to type 'typeof import("stream").Writable'.
      Types of parameters 'options' and 'opts' are incompatible.
        Type 'import("stream").WritableOptions' is not assignable to type '_Readable.WritableOptions'.
          Type 'WritableOptions' is not assignable to type 'WritableStateOptions'.
            Types of property 'defaultEncoding' are incompatible.
              Type 'string' is not assignable to type 'BufferEncoding'.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! Shattered-Star@1.0.0 tsc: `tsc`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the Shattered-Star@1.0.0 tsc script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我尝试重新安装@types/node,因为这似乎是它来自的模块,但这并没有引起任何变化。据我所知,我的源代码都没有使用readable-streams 子模块。事实上,删除它解决了我的问题——我只想知道到底发生了什么。这是我的tsconfig.json,以防我在那里遗漏了什么:



    "compilerOptions": 
        "target": "es6",
        "outDir": "built/",
        "moduleResolution": "Node"
    ,
    "include": [
        "./bot/**/*"
    ]



我将不胜感激这方面的任何帮助。希望我不是唯一遇到这种情况的人。谢谢!

【问题讨论】:

我只是忘了'yarn',所以我把这个评论留给像我这样的其他白痴 【参考方案1】:

在节点版本 v12.18.1 上更新到 @types/readable-stream@2.3.7 为我解决了这个问题。

【讨论】:

【参考方案2】:

我最近遇到了这个问题。 这似乎是@types/readable-stream (2.3.6) 的最新版本与您的node 版本之间的打字不兼容。

您可以在 yarn.lock / package-lock.json 中检查此版本中是否存在此包

似乎@types/readable-stream@2.3.6node >= 14 兼容,而@types/readable-stream@2.3.5 似乎与node < 14-兼容

我如何在我的环境中修复它node < 14

yarn add -D --exact @types/readable-stream@2.3.5

或者使用 npm:

npm i -D -E @types/readable-stream@2.3.5

这会覆盖 @types/readable-stream 软件包版本,并通过在 package.json devDependencies 中添加 "@types/readable-stream": "2.3.5" 来明确设置为 2.3.5 固定版本


我猜(但我没有测试过)我遇到了同样的问题,而您的 node 版本是 >= 14,您可能必须对 2.3.6 版本执行相同的操作987654337@


来源:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/44828

【讨论】:

感谢您的回复。奇怪的是,相反的做法似乎解决了问题。我正在运行 node v14.2.0@types/readable-stream@2.3.5 没有问题。我想知道node v14node v14.2 之间的任何更改是否会导致与readable-streams 的兼容性更改... 适用于节点 v12.13.1 似乎特定节点版本和可读流定义之间存在关系。我有节点 v12.16.1@types/readable-stream@2.3.5 以及 @types/readable-stream@2.3.7 用于锁定文件中的另一个依赖项。我尝试了两个都没有成功,然后去了 @latest,结果是@types/readable-stream@2.3.9,这解决了它。

以上是关于类静态端“typeof _Readable”错误地扩展了基类静态端“typeof Readable”的主要内容,如果未能解决你的问题,请参考以下文章

静态数组仅在类定义内溢出堆栈(段错误 11),否则不会......?

C ++:将静态类成员与静态类成员的传递版本进行比较

Unity 入门笔记 - 07(完) - 菜单&手机端&静态类&生成游戏

Thymeleaf错误地加载静态文件

如何方便地初始化一个类的静态成员?

Azure 上的 Django 应用错误地从 Azure Blob 加载静态文件