【发布时间】:2025-12-07 03:50:02
【问题描述】:
尝试使用https://github.com/joshwcomeau/redux-sounds 播放声音文件,但无法正常工作。下面是我用来设置它的相关代码。我不知道 webpack 是否没有正确加载它们或其他什么。我怎么知道它们是否被正确加载?关于如何让它发挥作用的任何想法?除了 chrome 说它无法解码音频之外,没有控制台错误,但这显然是错误的,并且在我在 Firefox 中尝试时不会出现。
configureStore.js
//...
import soundsMiddleware from 'redux-sounds';
const soundsData = {
barks: {
urls: ['data/barkSprite.wav', 'data/barkSprite.mp3'],
sprite: {
shortBark: [0, 500],
longBark: [600, 1250]
}
}
};
const loadedSoundsMiddleware = soundsMiddleware(soundsData);
//...
export default function configureStore(initialState) {
const store = createStore(
rootReducer,
initialState,
compose(
applyMiddleware(thunk, router, logger, loadedSoundsMiddleware),
DevTools.instrument(),
persistState(
window.location.href.match(
/[?&]debug_session=([^&]+)\b/
)
)
)
);
//...
actions.js
export const SHORT_BARK = 'SHORT_BARK';
export function shortBark() {
return {
type: SHORT_BARK,
meta: { sound: 'barks.shortBark' }
};
}
webpack.config.js
resolve: {
extensions: ['', '.js', '.jsx', '.scss', '.mp3'],
},
module: {
loaders: [
{
test: /\.mp3$/,
loader: 'file-loader'
},
]
}
【问题讨论】:
-
在 Chrome 检查器中检查您的网络标签 - 是否有任何错误的 URL 试图加载声音?此外,您实际上并没有在这里使用 webpack,webpack 意味着您
require()该文件就像任何其他 Javascript 文件一样,例如require('../relative/path/to/data/barkSprite.wav')。延伸阅读:blog.andrewray.me/webpack-when-to-use-and-why
标签: javascript express reactjs redux howler.js