Webpack file-loader读取音频文件时只能读取为base64吗

新手上路,请多包涵

目前在src目录中有music目录 目的是将music目录中的音频文件打包
image.png

  1. 先在vue-config.js中配置了file-loader 代码如下
function resolve(dir) {
  return path.join(__dirname, '.', dir)
}

module.exports = {

    // 添加文件loader
    config.module
      .rule('music')
      .test(/\.mp3$/)
      .include.add(resolve('src/music/'))
      .end()
      .use('file-loader')
      .loader('file-loader')
      .options({
        limit: false,
        name: 'music-[name]'
      })
  }
}
  1. 在main.js中测试引入
const requireAll = (requireContext) => requireContext.keys().map(requireContext)
const req = require.context('./music', false, /\.mp3$/)
const list = requireAll(req)
console.log(list)
  1. 浏览器打印是base64
    image.png

无法用base64作为src进行播放
在file-loader中已经配置了limit值 但是并没有生效,所有文件都只能读取为base64
请问如何解决

阅读 3.2k
2 个回答

base64 可以放入 src 进行播放

image.png


测试代码

fetch('http://www.lilnong.top/static/audio/1547430960867SSD0MSW4C.mp3')
    .then(v=>v.blob())
    .then(v=>{
        fr = new FileReader();
        fr.readAsDataURL(v)
        fr.onload = ()=>{
            el = document.createElement('audio')
            el.src = fr.result;
            el.controls = true;
            document.body.appendChild(el)
        }
    })

为什么音频数据信号要浏览器打印出来?
音频数据是二进制信号,要打印输出,估计只能转换成BASE64这种全由可打印字符处理的格式啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题