音频文件在汇总构建中不起作用(反应)
Audio files do not work in a rollup build (react)
我正在创建一个带有汇总的 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']
}
出于某种原因,当我向 url 添加限制时,它开始工作。
在rollup.config.js=>
export default {
....
plugins: [
....
url({
fileName: '[name][extname]',
include: ['**/*.mp3'],
limit: 100000
})
],
....
}
尝试在在线云中上传音频或电影,然后复制从该云生成的 link。然后,在您的应用程序中实施 link。
我正在创建一个带有汇总的 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']
}
出于某种原因,当我向 url 添加限制时,它开始工作。
在rollup.config.js=>
export default {
....
plugins: [
....
url({
fileName: '[name][extname]',
include: ['**/*.mp3'],
limit: 100000
})
],
....
}
尝试在在线云中上传音频或电影,然后复制从该云生成的 link。然后,在您的应用程序中实施 link。