流:引发错误即使安装了模块也无法解析模块“ react-redux”

时间:2018-07-27 17:48:33

标签: javascript react-redux flowtype

即使模块已安装且存在,Flow也无法解决它并引发错误。 见下文: 1)在bash中,我运行了flow,它抛出未找到模块的错误

user@pc:~/code/project$ flow
Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ src/functionalities/Growth/index.js:3:25

Cannot resolve module react-redux.

     1│ // @flow
     2│ import React from "react"
     3│ import { connect } from "react-redux"
     4│
     5│ type Props = {
     6│   children: Function



Found 1 error

2)下面的命令检查目录是否存在

user@pc:~/code/project$ ls node_modules | grep react-redux
react-redux

我试图删除并重新安装node_modules目录和yarn.lock文件。

版本应匹配:

flow version
Flow, a static type checker for JavaScript, version 0.77.0

.flowconfig:

[version]
0.77.0

enter image description here

这很可能是Flow的错误,我也提交了问题。

5 个答案:

答案 0 :(得分:30)

如何修复

您有两个选择:

  1. 手动删除依赖项
  2. 引入flow-typed来找到依赖类型 为您归档/存根

我使用选项2,但是很高兴知道下面发生了什么

选项1

.flowconfig的{​​{1}}下添加目录,

[libs]

现在,在您的项目根目录下创建该目录,并创建一个文件... [libs] /type-def-libs ... ,其中包含

/type-def-libs/react-redux

选项2

  • 如果使用纱线declare module 'react-redux' { declare module.exports: any; } ,请安装flow-typed
    • 我希望在可能的情况下在本地安装每个项目
  • 运行yarn add -D flow-typed
    • 这将为其找到的模块安装任何类型定义文件,并对所有未找到的模块进行存根处理,这与我们在选项1中所做的类似

为什么会发生此错误

Flow正在为您要导入的模块寻找类型定义。因此,尽管模块确实存在于yarn flow-typed install中,但是该模块没有将类型定义文件检入其代码中。

答案 1 :(得分:4)

我和你有同样的问题。

enter image description here

我使用flow-typed

解决了该问题

我做了以下事情:

  1. 全局安装flow-typed。示例:$ npm install -g flow-typed
  2. 然后在项目根文件夹中,运行$ flow-typed install react-redux@5.0.x enter image description here • Searching for 1 libdefs... • flow-typed cache not found, fetching from GitHub... • Installing 1 libDefs... • react-redux_v5.x.x.js └> ./flow-typed/npm/react-redux_v5.x.x.js react-redux 如果安装成功,则应该看到此信息。
  3. 然后尝试在项目中$ npm run flow再次运行流程。 react-redux的错误将不再存在。

答案 2 :(得分:0)

替代解决方案(在某些情况下)

检查您的.flowconfig并删除<PROJECT_ROOT>/node_modules/.*字段下的[ignore](如果有的话)。


感谢@meloseven解决了这个问题here

答案 3 :(得分:0)

我检查了package.json文件,发现react-redux丢失了。我将其手动添加到依赖项"react-redux": "x.x.x"中,然后运行npm install。请注意,版本号应与其他模块兼容。

答案 4 :(得分:0)

请确保您在.flowconfig中的'ignore'下提供路径,如下所示:

[ignore]
.*/node_modules/react-native/Libraries/.* 

不是这样的:

.*/node_modules/react-native/Libraries/Components
.*/node_modules/react-native/Libraries/Core
....