Trying to use lit element/Polymer Web components AND an Audioworklet/AudioWorklet processor, I got this error:
boot-c9e09360.js:20 Uncaught ReferenceError: window is not defined
at boot-c9e09360.js:20:1
at this line in my code:
await aw.audioContext.audioWorklet.addModule("micSpkrAwp.js") //micSpkrAwp is the audio-worklet-processor running in different process.
The boot-c9e09360.js is a polymer file that contains:
/**
@license Copyright (c) 2017 The Polymer Project Authors. All rights reserved. ... */
/* eslint-disable no-unused-vars / /*
- When using Closure Compiler, JSCompiler_renameProperty(property, object) is replaced by the munged name for object[property]
- We cannot alias this function, so we have to use a small shim that has the same behavior when not compiling.
- @param {?} prop Property name
- @param {*} obj Reference object
- @return {string} Potentially renamed property name */ window.JSCompiler_renameProperty = function(prop, obj) { return prop; };
I have been using lit element/Polymer web components and it works well. I removed the polymer components and the AudioWorkletProcessor works well. I think that the problem is that Polymer assumes that window is defined (since polymer works with DOM), but when encountering a javascript file - the AudioWorkletProcessor which has no reference to DOM (just a file that provides the audio process interface) this error occurs. Any suggestions? Code of micSpkrAwp.js:
import { frameBufferQBRes } from "./queue.js" import {config} from "./config.js"
class MicSpkrProcessor extends AudioWorkletProcessor {
constructor() {
super()
/** ..**/
process (inputs, outputs, parameters){
console.log(`micSpkrAws - this.stopImmediateFlag ${this.stopImmediateFlag}`)
if (this.stopImmediateFlag) return false
const retVal=this.processFromQueue(inputs,outputs,parameters)
return retVal
}
}
registerProcessor('mic-spkr-processor', MicSpkrProcessor)
Thanks to Kaiido for the solution! Answer: Polymer scripts got injected into the AudioWorkletProcessor code due to importing :
This was not immediately visible since it was a nested import (imported file contained this import statement). This import was removed, and the problem solved!