module.name_mapper.extension Flow选项不适用于MP3

时间:2017-07-27 17:06:48

标签: flowtype

这是一个减少案例的存储库:
https://github.com/bjohn465/flow-name_mapper-test/tree/3c17d1a4b9963412787b0c9e3a0ffaf51e471fb4

我想播放一个音频文件 - 在这种情况下是一个MP3文件 - 使用音频元素。

我已将webpack配置为使用file-loader加载MP3文件。此加载程序将文件复制到输出目录并将公共URL返回到该文件。因此,在import sound from './bell.mp3'之后,sound将是一个包含MP3文件网址的字符串。

我的.flowconfig看起来像这样:

[options]
module.name_mapper.extension='mp3' -> '<PROJECT_ROOT>/flow-typed/mp3-stub.js'

mp3-stub.js看起来像这样:

// @flow
const s: string = ''
export default s

从我能够找到的,这应该可行,但是当我运行Flow时,我仍然得到“找不到所需的模块”错误:

Error: src/audio-player.js:3
3: import sound from './bell.mp3'
                     ^^^^^^^^^^^^ ./bell.mp3. Required module not found

2 个答案:

答案 0 :(得分:1)

您是否尝试过将name_mapper与正则表达式一起使用而不是扩展名?

module.name_mapper='^\(.*\)\.mp3$' -> './flow-typed/mp3-stub.js'

答案 1 :(得分:0)

问题出在存根文件的位置(flow-typed)。我将存根从flow-stubs移到.flowconfig并更新了[options] module.name_mapper.extension='mp3' -> '<PROJECT_ROOT>/flow-stubs/mp3-stub.js'

flow-typed

我假设因为默认情况下Flow使用where left(@SearchLetter, 1) between '0' and '9 目录library definitions (or "libdefs"),所以它不喜欢存根在该目录中。

简化案例的固定版本可在此处获得:
https://github.com/bjohn465/flow-name_mapper-test/tree/335456fac80dd452469645930535861a91c3c4c7