Jef*_*son 3 types node.js reactjs
我有一个现有项目,我们将 Flow 的类型系统集成到反应端。该项目是基于电子的,因此根据定义,它是一个单一的回购。我们遇到了各种问题,以获取流程以识别导入语句。
node_modules 导入将失败:
import _ from 'lodash'; // Flow: Cannot resolve module lodash
Run Code Online (Sandbox Code Playgroud)
更重要的是,我们想要相对于我们的项目的绝对路径:
import {MyComponent} from 'src/component/myComponent';
// Flow: Cannot resolve module src...
Run Code Online (Sandbox Code Playgroud)
找到一个解决方案需要一些挖掘,并且文档在某些方面有点缺乏,所以我想抛出一个实际工作的编译列表。
在 webstorm 上设置流程,这样它就会给你模块错误
全局设置flow,将webstorm的js设置指向使用Flow,指向flow-bin的全局副本(甚至不是exe,只是dir)
将以下选项添加到 .flowconfig:
[options]
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
module.system=haste
Run Code Online (Sandbox Code Playgroud)
一些消息来源声称 flow-bin 在全球范围内运行得更好
全局安装flow-bin
yarn global add flow-bin
or
npm i -g flow-bin
Run Code Online (Sandbox Code Playgroud)
仔细检查它是否为您提供了当前版本的 flow-bin,这拒绝在 0.75.0 或更早版本上工作
在 Windows+yarn 上,这是 C:/Users/[your username]/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]/
Run Code Online (Sandbox Code Playgroud)
这是我当前的 .flowconfig
[ignore]
.*/build/.*
[include]
[libs]
[lints]
[options]
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
module.system=haste
[strict]
Run Code Online (Sandbox Code Playgroud)
告诉名称映射器将以 src/ 开头的模块解析到 src/ 目录,以便您的项目文件的绝对路径工作:
module.name_mapper='^src\/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
Run Code Online (Sandbox Code Playgroud)
告诉 flow 使用“haste”模块系统:
module.system=haste
Run Code Online (Sandbox Code Playgroud)
快速模块系统步骤很重要,否则它不知道“lodash”是指“./node_modules/lodash”。告诉它使用匆忙意味着它会正确地找到你的导入语句。有关仓促的更多信息,请点击此处