【问题标题】:React Flow: Cannot resolve module react-nativeReact Flow:无法解析模块 react-native
【发布时间】:2018-11-18 16:55:40
【问题描述】:

我从头开始了一个 React Native 项目并配置了 Flow。

当我运行 npm run flow 时,一切正常,除了 react-native 模块的一个小问题:

无法解析模块 react-native。

我正在使用:

"react": "16.3.1",
"react-native": "0.55.3",
"flow-bin": "0.74.0"

我的 .flowconfig 是:

[ignore]
.*/node_modules/.*
.*/.cache/.*
.*/test/.*

[include]

[libs]

[lints]

[options]

[strict]

尝试使用"flow-typed": "2.4.0",但没有成功。

我找到了以下issue,但没有任何解决方案:/

【问题讨论】:

  • 你用过吗? create-react-app 工具来创建种子,然后在 npm i somepack 之后?
  • 我忘了说我正在使用Expo。
  • 即使您使用了 Expo,但您是否按照上述步骤操作?
  • 不,仅此而已。我正在使用 Visual Studio Code 的 Flow 扩展,但我认为这没有意义。
  • 我初始化了空白 expo 应用程序,安装了 flow-bin,初始化了空的 .flowconfig 文件,将 @flow 添加到 App.js 并执行了 npx flow - 一切似乎都在工作。我是否遗漏了什么来重现您的问题?

标签: reactjs react-native flowtype


【解决方案1】:

您需要为react-native 添加类型定义。

在项目根目录中创建一个名为 type-def-lib 的文件夹,并在其中创建一个名为 react-native.js 的文件,其中包含这些内容

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

然后在您的.flowconfig 中将该文件夹添加到 libs 下:

[libs]
./type-def-libs

现在yarn run flow 应该不会产生错误。

【讨论】:

  • 这实际上是做什么的?谢谢!
  • 它为 react-native 模块提供了一个“libdef”,我不确定它为什么会起作用,因为 libdefs 不是必需的,但您可以在此处阅读有关该过程的文档:flow.org/en/docs/libdefs as据我所知,flow 会自动为所有没有类型声明的库(将它们设置为 any)执行上述确切过程,所以我假设当前的 react native 流类型声明存在某种错误,并且这显式 any声明会覆盖它。
【解决方案2】:

在最新版本flow-bin(0.157.0)中,这个问题可以通过从[ignore]中删除.*/node_modules/.*来解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 2016-03-23
    • 1970-01-01
    • 2020-04-15
    • 2020-03-02
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多