Flow和自定义Webpack加载器

问题描述 投票:1回答:1

我使用Webpack用Flow类型构建我的React项目。我已经使用svg-sprite-loader将Webpack配置为导入SVG文件:

{
  test: /\.svg$/,
  loader: ['svg-sprite-loader']
}

这允许我“导入”SVG文件:

import letterCellSymbol from '../styles/icons/tool-letter.svg'

然后我可以使用我的React组件中的文件,如下所示:

<svg className="icon">
  <use xlinkHref={`#${letterCellSymbol.id}`} />
</svg>

当然,这会导致Flow类型检查出现问题:

Error: src/components/Toolbox.jsx:70
 70: <use xlinkHref={`#${letterCellSymbol.id}`} />
                                          ^^ property `id`. Property not found in
 70: <use xlinkHref={`#${letterCellSymbol.id}`} />
                         ^^^^^^^^^^^^^^^^ String

告诉Flow这些SVG文件是否导出{id: string}类型的对象或完全忽略这些错误的正确方法是什么?

javascript webpack flowtype
1个回答
3
投票

我编辑了我的.flowconfig文件,包括:

[options]
module.name_mapper.extension='svg' -> '<PROJECT_ROOT>/src/helpers/SVGModule.js'

然后我创建了文件./src/helpers/SVGModule.js并输入:

/* @flow */
export default { id: '' }

这使Flow认为以.svg结尾的任何导入/必需文件都会导出{id:''},因此会忽略该错误。缺点是不存在的文件不会报告为错误。

帮助我解决这个问题的来源:

© www.soinside.com 2019 - 2024. All rights reserved.