【问题标题】:Can't play sound files无法播放声音文件
【发布时间】: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


【解决方案1】:

原来我忘了显示要表达的文件。

app.use('/data', express.static(path.join(__dirname, '/src/data')));

【讨论】: