我有一个现有项目,我们将Flow的类型系统集成到了React方面。该项目是基于电子的,因此,从定义上讲,它是单仓库。我们遇到了各种各样的问题,导致无法识别导入语句。
node_modules导入将失败:
import _ from 'lodash'; // Flow: Cannot resolve module lodash
更重要的是,我们想要相对于项目的绝对路径:
import {MyComponent} from 'src/component/myComponent';
// Flow: Cannot resolve module src...
为此需要寻找一些解决方案,并且在某些方面缺少文档,因此我想将实际可行的方法汇总清单。
答案 0 :(得分:1)
获取关于webstorm的流程设置,以便为您提供模块错误
全局设置流,并指向webstorm的js设置以使用Flow并将其指向flow-bin的全局副本(甚至不是exe,而仅是dir)
在.flowconfig中添加以下选项:
[options]
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
module.system=haste
一些消息来源声称流箱在全球范围内运行更好
全局安装流箱
yarn global add flow-bin
or
npm i -g flow-bin
仔细检查它是否为您提供了最新版本的流箱, 拒绝在0.75.0或更早版本上工作
在Windows +纱线上,这是C:/ Users / [您的用户名] / AppData / Local / Yarn / Cache / v1
在Windows + NPM上,这是C:/ Users / fish / AppData / Roaming / npm / node_modules
这就是我的流路:
C:/Users/[your username]/AppData/Local/Yarn/Cache/v1/npm-flow-bin-[whatever]/
这是我当前的.flowconfig
[ignore]
.*/build/.*
[include]
[libs]
[lints]
[options]
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
module.system=haste
[strict]
告诉名称映射器将以src /开头的模块解析到src /目录,以便您工程文件的绝对路径起作用:
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
告诉流程使用“急速”模块系统:
module.system=haste
急速模块系统步骤很重要,因为否则它不知道'lodash'是指'./node_modules/lodash'。告诉它使用急速意味着它将正确找到您的导入语句。 More info on haste available here