LoginSignup
0
1

More than 1 year has passed since last update.

AudioWorklet で Uncaught (in promise) DOMException: The user aborted a request が出る問題

Last updated at Posted at 2023-05-15

はじめに

AudioWorklet を使った時にUncaught (in promise) DOMException: The user aborted a requestのエラーではまったので、書いてみました!!

まず nextjs でプロジェクトを作成

今回は nextjs のプロジェクトで起きたので nextjs で書きます。

npx create-next-app@latest

AudioWorklet の準備

MDN を参考にして、AudioWorklet を触っていきます。

white-noise-processor.js

class WhiteNoiseProcessor extends AudioWorkletProcessor {
  process(inputs, outputs, parameters) {
    const output = outputs[0];
    output.forEach((channel) => {
      for (let i = 0; i < channel.length; i++) {
        channel[i] = Math.random() * 2 - 1;
      }
    });
    return true;
  }
}

registerProcessor("white-noise-processor", WhiteNoiseProcessor);

hooks.ts

 const audioContext = new AudioContext();
 await audioContext.audioWorklet.addModule("white-noise-processor.js");
 const whiteNoiseNode = new AudioWorkletNode(audioContext, "white-noise-processor");
 whiteNoiseNode.connect(audioContext.destination);

問題

white-noise-processor.js を hooks.ts と同じディレクトリにしていたけど、 Uncaught (in promise) DOMException: The user aborted a requestというエラーが出て叩けない。。。

解決策

  • public フォルダーにAudioWorkletProcessorで書いたファイルを置く。
  • 恐らく、サービスワーカーのため public フォルダーに置く必要がある。

余談

  • public フォルダーに置いてもアクセス出来ない時は先頭に/を書くと出来る場合がある。
    await audioContext.audioWorklet.addModule("white-noise-processor.js");
    await audioContext.audioWorklet.addModule("/white-noise-processor.js");
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1