流程:引发错误即使安装它也无法解析模块"react-redux"

Kun*_*nok 26 javascript flowtype react-redux

即使tho模块已安装且存在,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
Run Code Online (Sandbox Code Playgroud)

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

user@pc:~/code/project$ ls node_modules | grep react-redux
react-redux
Run Code Online (Sandbox Code Playgroud)

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

版本应匹配:

flow version
Flow, a static type checker for JavaScript, version 0.77.0
Run Code Online (Sandbox Code Playgroud)

.flowconfig:

[version]
0.77.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

cog*_*ell 40

如何解决它

您有两种选择:

  1. 手动存根依赖
  2. 引入flow-typed为您找到依赖类型文件/存根

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

选项1

.flowconfig,在下面添加一个目录[libs],

...
[libs]
/type-def-libs
...
Run Code Online (Sandbox Code Playgroud)

现在,在项目根目录和/type-def-libs/react-redux包含的文件中创建该目录,

declare module 'react-redux' {
  declare module.exports: any;
}
Run Code Online (Sandbox Code Playgroud)

选项2

  • 安装flow-typed,如果使用纱线yarn add -D flow-typed
    • 我希望尽可能在本地安装每个项目
  • yarn flow-typed install
    • 这将为它找到的模块安装任何类型定义文件,它将存根它找不到的任何模块,这与我们在选项1中所做的类似

为什么会发生这种错误

Flow正在查找要导入的模块的类型定义.因此,虽然该模块确实存在,但/node_modules该模块中没有将类型定义文件签入其代码中.


zul*_*oda 7

我和你有同样的问题。

在此处输入图片说明

我通过使用解决了它 flow-typed

我做了以下事情:

  1. flow-typed全局安装。例子:$ npm install -g flow-typed
  2. 然后在您的项目根文件夹中,运行 $ flow-typed install react-redux@5.0.x 在此处输入图片说明 • 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在您的项目中再次运行 flow 。错误react-redux将不再存在。

  • 谢谢你这帮助了很多。不过,我稍微调整了解决方案,这是我想出的: 1. 在本地安装 `flow-typed`。`npm i -D flow-typed` 2. 在 `package.json` 脚本部分添加 `'flow-typed: flow-typed`,3. 从你的项目根目录运行 `npm run flow-typed create-stub <库>` (4认同)

exm*_*axx 5

替代解决方案(对于某些情况)

检查.flowconfig并删除<PROJECT_ROOT>/node_modules/.*该字段下方的内容[ignore](如果那里有)。

更新1(由arka!<PROJECT_ROOT>/node_modules/react-redux/.* ):或者你可以在.之后添加<PROJECT_ROOT>/node_modules/.*。这将忽略除 之外的所有模块react-redux


感谢@meloseven在这里解决了这个问题。