我有一个 Lerna 包,其中包含两个使用 Create React App 制作的不同 React 应用程序(我们称它们为 App A 和 App B)。其中一个应用程序导入另一个应用程序。我想为这两个应用程序添加 Flow 支持。为此,我在全局级别安装了 Flow。
单独使用每个应用程序时,流程功能正常。但是,当我将其中一个应用程序导入另一个应用程序时,我在应用程序 B 中收到以下错误:
Module parse failed: Unexpected token (8:5)
You may need an appropriate loader to handle this file type.
import { AppA } from 'app-a';
type Options = {
key: string,
onSuccess: function,
我解释这一点的方式是 Flow 没有处理 App A,因为它是 App B 内部的符号链接依赖项(由于 Lerna)。为了解决这个问题,这是我尝试过的:
- 在 .flowconfig 中的 [options] 下,添加:
module.name_mapper='^app-a$' -> '<PROJECT_ROOT>/../app-a/src/index.js'
哪里index.js
是 App A 的入口点。此解决方案来自:https ://github.com/lerna/lerna/issues/891 - 在 .flowconfig 中的 [include] 下,添加:
../app-a/src/index.js
- 与其在全局范围内使用 Flow,不如在每个应用程序中单独安装 Flow。使用这些单独的 Flow 实例,我
flow ls
在 App B 中运行,看到两者app-b
和app-a
都是文件列表的一部分,但仍然得到相同的错误 - 我一直在避免弹出我的 Create React App,因为我希望能够轻松更新到较新的版本。因此,如果我不必使用 flow strip types 插件会更理想