音频文件在汇总构建中不起作用(反应)

Posted

技术标签:

【中文标题】音频文件在汇总构建中不起作用(反应)【英文标题】:Audio files do not work in a rollup build (react) 【发布时间】:2021-08-15 15:20:15 【问题描述】:

我正在创建一个带有汇总的 React 库,我已经设法解决了我遇到的所有其他问题,但我无法让音频文件在构建中工作。

在构建目录中。我可以看到导入的音频文件,但是当我运行调用库的应用程序时,音频文件似乎没有链接。

我正在使用@rollup/plugin-url 来管理音频文件。

这是我在主应用程序中遇到的错误 =>

导入音频文件,

import sound from './Sound.mp3'; 
const play = new Audio(sound);

const SoundCom = (alive = true) => 
    const [played, setPlayed] = useState(false);
    
    const playAudio = () => 
        play.play().then(() => console.log('played!'));
    

    useEffect(() => 
        if (!played && !alive) 
            playAudio();
            setPlayed(true);
        
    , [alive, played])

    return (
        <div className='main-styles'>
            .....
        </div>
    ) 

rollup.config.js =>

import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import external from 'rollup-plugin-peer-deps-external'
import resolve from 'rollup-plugin-node-resolve'
import scss from 'rollup-plugin-scss'
import json from '@rollup/plugin-json'
import image from 'rollup-plugin-img'
import url from '@rollup/plugin-url'

import pkg from './package.json'

export default 
  input: 'src/index.js',
  output: [
    
      file: pkg.main,
      format: 'cjs'
    ,
    
      file: pkg.module,
      format: 'es'
    
  ],
  plugins: [
    babel(
      exclude: 'node_modules/**',
      presets: ['@babel/preset-react']
    ),
    resolve(),
    commonjs(
      namedExports: 
        'node_modules/react-countdown-circle-timer/lib/index.js': [
          'CountdownCircleTimer'
        ]
      
    ),
    external(),
    scss(
      output: './dist/style.css',
      failOnError: true,
      runtime: require('sass')
    ),
    image( limit: 100000 ),
    json(),
    url(
      fileName: '[name][extname]',
      include: ['**/*.mp3']
    )
  ],
  external: ['react-dom']

【问题讨论】:

【参考方案1】:

尝试将音频或电影上传到在线云中,然后复制从该云生成的链接。然后,在您的应用程序中实现该链接。

【讨论】:

【参考方案2】:

由于某种原因,当我向 url 添加限制时,它开始起作用了。

在 rollup.config.js =>

export default 
  ....
  plugins: [
    ....
    url(
      fileName: '[name][extname]',
      include: ['**/*.mp3'],
      limit: 100000
    )
  ],
  ....

【讨论】:

以上是关于音频文件在汇总构建中不起作用(反应)的主要内容,如果未能解决你的问题,请参考以下文章

从android上传的音频文件在ios中不起作用

音频在 APK 中不起作用

开和关音频按钮在 JS 中不起作用

如果 mp3 文件来自端口 8443,则音频标签在 Cordova Web 应用程序中不起作用

导入 jquery 插件在反应应用程序中不起作用

背景图像在反应中不起作用