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

时间:2017-04-07 13:44:20

标签: eslint flowtype

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

import isArray from 'lodash/isArray';

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

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

关于如何解决这个问题的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:2)

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来支持这个用例。

答案 1 :(得分:0)

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

根据您问题中的信息,我看到了两种可能性:

  1. 您还没有实际安装lodash。确保它在package.json中列为依赖项并运行npm install
  2. 您通过ESLint以某种方式管道Flow错误(虽然我不建议这样做),并且flow-typed lodash libdef存在问题<a href="localhost/pdf/data.pdf"> Download this </a> 。在这种情况下,您可能需要弄清楚如何调整libdef以允许此操作。