这是一个减少案例的存储库:
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
答案 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