加载模块时出现AudioWorklet DOMException错误

时间:2018-10-03 22:09:40

标签: javascript web-audio web-audio-api

我正在开发一个WebAudio应用程序,该应用程序需要AudioWorklet,并且需要process()函数中使用的许多不同脚本中的函数。因此,我尝试使用processor命令在frictionProcessor.js脚本(import)中加载上述脚本,如下所示:

import {MAX_ERROR, MAX_ITERATIONS} from "./utilities.js";  
class FrictionProcessor extends AudioWorkletProcessor {...}
registerProcessor('frictionProcessor', FrictionProcessor);

其中utilities.js是:

//Constants
const MAX_ERROR = 0.001;
const MAX_ITERATIONS = 50;
const MAX_POS = 10000.0;
const LCG_MULT = 1664525;
const LCG_ADD = 1013904223;

这给出了错误: Uncaught (in promise) DOMException: The user aborted a request.
当注释带有import的行时,该错误消失了,但是我需要加载很多模块(不仅是此处显示的模块),因此,不使用它不是一种解决方法。

我找到的最接近的问题是:AudioWorklet error: DOMException: The user aborted a request。但是,这并没有太大帮助,因为我不确定如何使用application/javascript为工作流处理器提供服务,因为它已经加载了addModule函数。

另一方面,我尝试了https://developers.google.com/web/updates/2018/06/audio-worklet-design-pattern中的设计模式示例代码,它们可以正常工作。

我将Chrome 69和用于Chrome的Web服务器用作本地主机。

有人知道为什么会这样,还是如何避免呢?该错误是经常发生的,并且不是很容易解释。

谢谢

1 个答案:

答案 0 :(得分:0)

也许您的utilities.js应该是:

const MAX_ERROR = 0.001;
const MAX_ITERATIONS = 50;
const MAX_POS = 10000.0;
const LCG_MULT = 1664525;
const LCG_ADD = 1013904223;

export {
  MAX_ERROR,
  MAX_ITERATIONS,
  MAX_POS,
  LCG_MULT,
  LCG_ADD,
};

任何评估/解析错误都将导致DOMException。我同意可以对此进行改进。我为此提交了a bug