emscripten-core / emscripten-core/emscripten

`XMLHttpRequest` is not defined when running emscripten-built AudioWorklet with preloaded files

Open
#15,925 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

Please include the following in your bug report:

**Version of emscripten/emsdk:**
```
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 2.0.34 (0d24418f0eac4828f096ee070dae8472d427edaa)
clang version 14.0.0 (https://github.com/llvm/llvm-project 3d39612b3dd3f6b67ee63da305d30606abbe7287)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/paul/source/emsdk/upstream/bin
```

**Failing command line in full:**
Compiling/linkin works out. I compiled with `--preload-file ${CMAKE_CURRENT_SOURCE_DIR}/assets` in a CMake project. I do get the js file and the .data file.

**Error**
I use emscripten in an AudioWorklet scenario.
I would like to preload a set of files to be accessed by the C++ sources.
When loading the file however, I have the following error in the JS Chrome console:

```
sound-engine.wasm.js:48 Uncaught ReferenceError: XMLHttpRequest is not defined
at fetchRemotePackage (sound-engine.wasm.js:48)
at loadPackage (sound-engine.wasm.js:102)
at sound-engine.wasm.js:196
at sound-engine.wasm.js:198
```

I am very newb when it comes to web technologies. I wonder if this is because AudioWorklets don't really start in a javascript environment where `XMLHttpRequest` are available? To be clearer, I'm supposed to load the processor module through `this._context.audioWorklet.addModule('./batteur-processor.js')`, which in turns imports the WASM file. Maybe this `addModule` function doesn't provide `XMLHttpRequest`? Any pointer towards a solution would be appreciated! Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.