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

问题描述 投票:3回答:2

有些模块似乎对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找到这个模块或让它完全忽略导入行的任何想法?

flowtype
2个回答
4
投票

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

如果您不介意手动输入它,请将react-native-overlay.js添加到您的界面并输入几个签名。


0
投票

发生这种情况是因为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是一种不安全的类型,因此您始终可以利用改进库的定义

希望有所帮助,

© www.soinside.com 2019 - 2024. All rights reserved.