2017-07-03 257 views
1

我有一个使用Flow进行静态类型检查的React项目;我有使用flow-typed安装npm第三方库的libdefs。但是,有时这些类型不被识别。例如,下面是使用react-router-dom NPM包使用类型时从相应的flow-typed/npm/react-router-dom_v4.x.x.js一个阵营部件,具有identifier ... Could not resolve name流错误:为什么流类型的libdefs类型不能一致地工作?

flow error

类型是在libdef虽然:

react-router-dom flow-typed

我正在这样做与其他flow-typed类型,它工作。我证实,我已经安装在package.json最新的磁带库和最新的相关flow-typed libdef安装:

package.json lateset react-router-dom

flow-typed latest react-router-dom

https://github.com/flowtype/flow-typed/tree/master/definitions/npm/react-router-dom_v4.x.x

我也试着明确导入类型像这样的ES6模块:

import type { RouterHistory } from 'react-router-dom'`

但是这会导致出现RouterHistory not found in 'react-router-dom'错误,即使您可以在上面的屏幕截图中看到它存在于flow-typed/npm/react-router-dom_v4.x.x.js libdef中;我相信只有npm库里面有*.js.flow个文件(其中react-router-dom没有,但是在flow-typed中定义),显式导入类型才能工作。

所以,问题是:为什么不RouterHistory类型的工作,如果它是在相关flow-typed libdef定义?

+0

你绝对需要在你的问题结束时的导入线。一旦你这样做,你会得到什么错误? – loganfsmyth

+0

为什么需要输入行?我在'flow-typed'中使用的所有其他libdefs都无需导入类型。就像我可以使用React的'SyntheticEvent'一样。即使如此,在'react-router-dom'中添加'import type {RouterHistory}会导致在'react-router-dom'错误中找不到'RouterHistory',即使'RouterHistory'类型在'react- router-dom_v4.xxjs“flow-typed”文件,如问题的屏幕截图所示。 – trevordmiller

回答

0

您的进口声明是错误的。它应该是这样的:

import type { RouterHistory } from 'react-router-dom' 

编辑:

看来,RouterHistory类型是在反应 - 路由器的封装。由于react-router-dom使用react-router作为基础依赖项,因此应该添加flow-typed的react-router软件包。 Flow-React-Router

+0

这会导致一个不同的错误:'react-router-dom'中找不到'RouterHistory'。 'react-router-dom'里面没有'* .js.flow'文件,所以这不起作用吧? – trevordmiller

+0

Ah okey,似乎RouterHistory类型不是react-router-dom包的一部分。相反,您应该通过流式输入安装react-router软件包。我编辑了我的答案。 –

+0

如截图所示,'RouterHistory'位于'react-router-dom_v4.xxjs'流程型文件中https://i.stack.imgur.com/w7mMr.png – trevordmiller

-1

您很可能错过了// @flow评论。

+0

我在我的项目中的每个JS文件的顶部有'// @ flow' – trevordmiller

相关问题