Quiero un audio para reproducir con un clic en un botón. El audio debe elegirse en función del animal seleccionado. La función que proporciona el audio se ve así:
function introAudioForAnimal(animal) { if (animal == "siri") { return } let audioImport = import("../assets/audio/wer_wars/" + animal + "/" + animal + " anfang.wav"); return new Audio(audioImport); } El audio devuelto es reproducido por introAudioForAnimal("tiger").play();
El problema es que no se reproduce nada, pero aparece un error de consola poco informativo:
index.js:1 Uncaught Error: The error you provided does not contain a stack trace. at L (index.js:1) at Y (index.js:1) at index.js:1 at index.js:1 at l (index.js:1) L @ index.js:1 Y @ index.js:1 (anonymous) @ index.js:1 (anonymous) @ index.js:1 l @ index.js:1 game:1 Uncaught (in promise) DOMException: Failed to load because no supported source was found.Ya he intentado registrar la ruta exacta:
../assets/audio/wer_wars/tiger/tiger anfang.wavEsto coincide con mi sistema de archivos en donde se encuentra el audio.
¿Alguna idea de cómo puedo hacer que se reproduzca el audio? Si necesita más información, por favor hágamelo saber.
Editar: Mi navegador es Google Chrome, si eso te ayuda
Para todos los demás que buscan, encontré una solución:
En primer lugar, cambié la forma en que definí la ruta:
let audioImport = import(`../assets/audio/wer_wars/${animal}/${animal} anfang.wav`);Y el problema clave fue que necesita usar la propiedad predeterminada de esa importación dinámica para crear un nuevo audio:
new Audio(audioImport.default);Esta solución me funcionó muy bien.