Closure minifies everything, so we can't actually create a local variable
called "Module". But, we can detect it, and use it. So if you do
====
var Module = {}; // add this line
importScripts("hello.js");
if (Module) {
console.log("Module is defined");
}
====
it will work. That is how it works when not on a worker, too - the HTML
generally defines Module (and hooks it up to the canvas, etc.). Then
closure compiled code can see it.
- Alon
On Thu, Feb 26, 2015 at 3:37 AM, Stefano Sabatini <[email protected]>
wrote:
> Hi,
>
> I have this simple use case:
>
> hello-worker.html -----------------------8<---------------------
> <!doctype html>
> <html lang="en-us">
> <head>
> <meta charset="utf-8">
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
> <title>Emscripten Test</title>
> <script type="text/javascript">
> var w = new Worker("hello-worker.js");
> </script>
> </body>
> </html>
> hello-worker.html -----------------------8<---------------------
>
>
> hello.c: -----------------------------8<------------------------
> #include <stdio.h>
>
> void foo(void)
> {
> printf("foo\n");
> }
>
> int main() {
> return 0;
> }
> hello.c: -----------------------------8<------------------------
>
>
> hello-worker.js ---------------------8<-------------------------
> importScripts("hello.js");
>
> if (Module) {
> console.log("Module is defined");
> }
> hello-worker.js ---------------------8<-------------------------
>
> I compile hello.js with:
> EMCC hello.c -s NO_EXIT_RUNTIME=0 -s ASSERTIONS=1 -s
> EXPORTED_FUNCTIONS="['_foo']" --closure 1 -O2 -o hello.js
>
> For some reasons when the hello.js code is loaded from the worker,
> Module is not defined and I get:
>
> ReferenceError: Module is not defined hello-worker.js:3
> "run() called, but dependencies remain, so not running" hello.js:4
>
> This only happens with -O2 --closure 1, it will work with -O2
> --closure 0 or with -O1 --closure 1.
>
> The equivalent non-worker code is working fine (that is Module is
> correctly referenced):
> hello.html -----------------------8<---------------------
> <!doctype html>
> <html lang="en-us">
> <head>
> <meta charset="utf-8">
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
> <title>Emscripten Test</title>
> <script type="text/javascript" src="hello.js"></script>
> <script type="text/javascript">
> if (Module) {
> console.log("Module is defined");
> }
> </script>
> </body>
> </html>
> hello.html -----------------------8<---------------------
>
> BTW this is probably affecting Broadway, see
> https://github.com/mbebenita/Broadway/issues/45
>
> Can someone explain why this is happening? Should I file an issue?
>
> TIA
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.