Reactjs 无法从特定URL访问本地声音

Reactjs 无法从特定URL访问本地声音,reactjs,react-router,html5-audio,Reactjs,React Router,Html5 Audio,我在使用React路由器的React应用程序中访问本地声音时遇到问题。这些声音都位于public/sounds/SFX文件夹中 我是这样玩的: let audio = new Audio(audio_object.path); audio.play(); 其中路径类似于: “sounds/SFX/SFX_error.mp3” 或 “sounds/SFX/SFX_sparkle.mp3” 应用程序中的所有其他声音都能正确播放,但如果我在url上: 它将失败,并显示以下消息: 404(未找到)。未

我在使用React路由器的React应用程序中访问本地声音时遇到问题。这些声音都位于public/sounds/SFX文件夹中

我是这样玩的:

let audio = new Audio(audio_object.path);
audio.play();
其中路径类似于: “sounds/SFX/SFX_error.mp3” 或 “sounds/SFX/SFX_sparkle.mp3”

应用程序中的所有其他声音都能正确播放,但如果我在url上: 它将失败,并显示以下消息:

404(未找到)。未捕获(承诺中)DomeException:未能加载,因为找不到支持的源

这不是一个问题与特定的声音b/c我可以从其他网址播放它。问题是它试图查找不存在的childSelector文件夹。但我不知道为什么这个url只是附加了那个部分

如果我在路线()上一层,从那里播放一个声音,那么效果很好。它似乎能够剥离一层路径,但如果我再往下走一层,它就失败了。这是我的假设,因为这是这个url和应用程序中其他url的唯一区别。如果有必要的话,我是通过直接进入历史而走上这条道路的:

this.props.history.push('/childSelector/menu');

但我在应用程序的其他地方做过,它没有影响音频。

所以我找到了解决方案,我认为我想得太多了

let audio = new Audio(document.location.origin +"/"+ audio_object.path);
现在,很多不是从基本url触发的声音在这个修复之前播放得很好,我也说不出原因——只有两级深度的url才会被破坏,但使用这个解决方案,所有url都能按预期播放