3

我有一个 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-bapp-a都是文件列表的一部分,但仍然得到相同的错误
  • 我一直在避免弹出我的 Create React App,因为我希望能够轻松更新到较新的版本。因此,如果我不必使用 flow strip types 插件会更理想
4

0 回答 0