有些模块似乎对Flow不可见。例如,我通过npm将react-native-overlay安装到我的node_modules目录中,但是我从Flow得到了一大堆这样的错误:
[js/components/DatePickerOverlay.js:18
18: let Overlay = require('react-native-overlay');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ react-native-overlay. Required module not found
这个模块没有类型,所以如果我可以让Flow完全忽略它就没问题。
这是我的.flowconfig(基于React Native的一个):
https://gist.github.com/almost/20c6caf6d18d0e5c689f
你可以看到我在流0.20.1并且我有module.system = haste(根据React Native的要求)
我尝试在导入行中添加// $ FlowIgnore注释,但然后Flow抱怨不需要的忽略注释!我还尝试使用虚拟导出创建一个react-native-flow.js.flow文件,该文件似乎首先工作,但之后流程重启停止工作。
有关如何帮助Flow找到这个模块或让它完全忽略导入行的任何想法?
看起来你在这里忽略它:https://gist.github.com/almost/20c6caf6d18d0e5c689f#file-flowconfig-L42-L50
如果您不介意手动输入它,请将react-native-overlay.js添加到您的界面并输入几个签名。
发生这种情况是因为flow-typed中不存在库。
一个简单的修复可能是在.flowconfig文件中创建以下条目:
[ignore]
<PROJECT_ROOT>/libdefs.js
[libs]
./libdefs.js
如果使用flowtype <0.60.0加入libdefs.js
// @flow
declare module "react-native-overlay" {
declare var exports: any;
}
或者如果使用flowtype> 0.60.0
declare module 'react-native-overlay' {
declare module.exports: any;
}
注意:any
是一种不安全的类型,因此您始终可以利用改进库的定义
希望有所帮助,