node_modules中存在的模块的“找不到所需模块”

问题描述:

某些模块似乎对Flow不可见。例如,我有通过NPM安装到我的node_modules目录react-native-overlay,但我得到了一大堆这样的错误,从流量:node_modules中存在的模块的“找不到所需模块”

[js/components/DatePickerOverlay.js:18 
18: let Overlay = require('react-native-overlay'); 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ react-native-overlay. Required module not found 

此模块没有类型,因此这将是很好,如果我可以直接去找流完全忽略它。

这里是我的.flowconfig(基于原生做出反应的一个):

https://gist.github.com/almost/20c6caf6d18d0e5c689f

正如你可以看到我在流0.20.1和我有module.system =急速(如要求作出反应原生)

我尝试在导入行中添加一个// $ FlowIgnore注释,但后来流程投诉了一个不需要的忽略注释!我也尝试用一个虚拟导出创建一个react-native-flow.js.flow文件,它似乎在第一时间工作,但在流程重新启动停止工作后。

有关如何帮助Flow找到此模块或使其完全忽略导入行的任何想法?

+0

我写了一个GitHub的问题进行流量有关解决此错误或改善此错误消息:[导入在.flowconfig中忽略的文件时不应该出现“找不到需要的模块”错误](https://github.com/facebook/flow/issues/3945) –

看起来你在这里忽略它:https://gist.github.com/almost/20c6caf6d18d0e5c689f#file-flowconfig-L42-L50

如果你不介意手动键入它,添加一个反应 - 本机overlay.js中你的接口和输入了几个签名。

+0

Arg!我完全错过了这一点,我曾将它作为以前版本的Flow中的错误的解决方法,然后完全忘记了它。谢谢! –

+0

有没有办法告诉流,我想忽略node_modules中的库,也不提供任何流类型的声明?我希望流程完全忽略该库,只要我与它交互,流可以认为它是有效的。我冒这个险。可以做到吗? – Ernesto

发生这种情况的原因是该库不存在于flow-typed中。如果使用流动型<

[ignore] 
<PROJECT_ROOT>/libdefs.js 
[libs] 
./libdefs.js 

0.60.0加入libdefs.js

// @flow 

declare module "react-native-overlay" { 
    declare var exports: any; 
} 

或者如果使用流动型> 0.60:

一个简单的修正可以创建在.flowconfig文件中的以下条目。 0

declare module 'react-native-overlay' { 
    declare module.exports: any; 
} 

注:any是不安全的类型,所以你总是可以利用提高图书馆

希望帮助的定义,