flowtype 将单个包导入标记为未找到

flowtype marks individual package import as not found

我正在尝试开始使用 Flowtype,但是在导入子包时,例如

import isArray from 'lodash/isArray';

我的 eslint 抱怨找不到所需的模块。

我已经使用 flow-typed install 安装了所有可以找到的 lib def。

知道如何解决这个问题吗?

谢谢!

首先,Flow 不是 ESLint。它们是两个独立的工具。 flow-typed install 通常不会影响 ESLint 错误。

根据你问题中的信息,我认为有两种可能:

  1. 您还没有真正安装 lodash。确保它在 package.json 和 运行 npm install.
  2. 中列为依赖项
  3. 你以某种方式通过 ESLint 传递 Flow 错误(尽管我不推荐这样做),lodashflow-typed libdef 存在问题。在那种情况下,您可能需要弄清楚如何调整 libdef 以允许这样做。

Flow 将 lodash/isArray 视为它自己的模块,因此需要告知该模块的导出内容。

修改 lodash libdef 以导出 lodash/isArray

您可以这样做(我提取了 libdef 的一个子集并向您展示了需要更改的内容)

declare module 'lodash/isArray' {
  declare function isArray(value: any): bool;

  declare module.exports: typeof isArray
}

declare module 'lodash' {
  declare class Lodash {
    isArray: $Exports<'lodash/isArray'>
  }

  declare var exports: Lodash;
}

如果您有任何问题,请告诉我。

如果人们按照您的方式加载 lodash 模块是正常的,则应更新整个 libdef 以支持此用例。