Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何扩展flow-bin以支持新的Node.js方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在工具报告错误的情况下使用flow-bin解决bug,实际上它是流本身的错误

例如,使用Flow v0.62和Node.js Buffer#swaP64方法

Error: lib/index.js:88                                                                                           
 88:         int64buf.swaP64() // turn into Little-Endian
                      ^^^^^^ property `swaP64`. Property not found in                     
 88:         int64buf.swaP64() // turn into Little-Endian
             ^^^^^^^^ Buffer

根据Node的文档,我很确定该方法存在.我真的不想分叉Flow项目来修复这么小的东西.

在我等待Facebook接受拉取请求时是否有解决方法

解决方法

找到了一个允许我覆盖Node.js包含的声明Flow内部使用的解决方案.

Flow允许使用$projectRoot / flow-typed文件夹来包含类型的自定义声明,这通常用于包含常见npm库的声明.

同一文件夹也可用于覆盖Flow内部用于其Node.js标准库的某些类型.

我必须创建一个名为$projectRoot / flow-typed / node.js的文件,并在此文件中复制https://github.com/facebook/flow/blob/master/lib/node.js的整个部分.复制部分部分不起作用,因为此时Flow不支持扩展声明的类型(https://github.com/facebook/flow/issues/396).

例如,获取Transform流并将objectMode类型参数添加到其_transform方法.看起来像这样

declare class stream$Transform extends stream$Duplex {
  _transform(
    chunk: Buffer | String | Object,encoding: String,callBACk: (error: ?Error,data?: Buffer | String | Object) => void
  ): void;
  _flush(
    callBACk: (error: ?Error) => void
  ): void;
}

每个buffer的位置字符串也被替换为包含Object.

/flow-typed/node.js文件在项目的版本控制中进行管理.但是,一旦较新版本的Flow支持Node.js中的额外语法,就可以删除此声明.同时,它解决了由于流量滞后于Node.js及其一般不正确性导致的Flow错误.

大佬总结

以上是大佬教程为你收集整理的如何扩展flow-bin以支持新的Node.js方法?全部内容,希望文章能够帮你解决如何扩展flow-bin以支持新的Node.js方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。