使用流时忽略 node_modules

Posted

技术标签:

【中文标题】使用流时忽略 node_modules【英文标题】:Ignoring node_modules when using flow 【发布时间】:2017-08-12 20:28:29 【问题描述】:

我在我的 React Native 应用程序中使用 flow,flow 的初始启动非常慢,因为它正在遍历我的 node_modules 目录。 Flow 报告来自这些第三方库的大量错误,我无法修复。

我可以告诉 flow 忽略 node_modules 中的任何错误吗?我的配置文件中有这个:

[ignore]
.*/node_modules/.*

但是,流现在告诉抛出 react-native Required module not found。奇怪的是,在导入 React 时并没有发现这个错误。

【问题讨论】:

【参考方案1】:

您可以在项目根目录中创建一个名为 flow-typed 的文件夹,并在其中为您的模块创建声明文件。因此,在这种情况下,您将创建文件:

flow-typed/react-native.js

// @flow

declare module 'react-native' 
    /* declarations go here... */

React 在包含时不会抱怨的原因是,flow 带有开箱即用的声明 (https://github.com/facebook/flow/blob/master/lib/react.js),就像它带有 javascript 和浏览器标准库的声明一样。

警告,不过,编写这些声明文件并非易事。要获得灵感,请查看 Flow 附带的声明以及 https://github.com/flowtype/flow-typed 存储库中的声明。

【讨论】:

绝对正确!我使用flow-typed 为我的devDependencies 中的所有模块自动生成声明文件。但是,react-native 是 dependency,所以我必须手动创建文件。 @Dan AFAIK react-native 带有流类型 - 也许您曾经/正在使用太新版本的流?我认为他们仍在 v0.40.0 上。 如果您不想手动编写声明存根,请使用流类型创建声明存根:flow-typed create-stub <library-name> 有没有办法告诉 flow 我想忽略 node_modules 中的库并且不提供任何流类型声明?我希望 flow 完全忽略该库,每当我与它交互时,flow 都可以认为它是有效的。我承担这个风险。能做到吗?

以上是关于使用流时忽略 node_modules的主要内容,如果未能解决你的问题,请参考以下文章

使用 CUDA 流时的段错误

在使用IO流时该选择何种流对象

使用rtsp流时Tensorflow对象检测速度慢

使用 Java 8 流时的新对象实例化

使用 Spark SQL 流时缺少 Avro 自定义标头

在 Node.js 中使用流时内存泄漏?