Skip to content

Cannot use EXPORT_ES6=1 and USE_PTHREADS=1 at the same timeΒ #11303

@protango

Description

@protango

If I try to invoke emcc using both the EXPORT_ES6 and USE_PTHREADS flags, I receive an error relating to the acorn optimizer:

Command
emcc file.cpp -o bin/file.js --bind -s MODULARIZE=1 -s EXPORT_ES6=1 -O3 -s USE_PTHREADS=1

Output

C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:2780
  throw err
  ^

SyntaxError: 'import' and 'export' may only appear at the top level (61:6)
      import(e.data.urlOrBlob).then(function(PhysicsModule) {
      ^

    at Parser.pp$4.raise (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:2778:13)
    at Parser.pp$1.parseStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:831:16)
    at Parser.pp$1.parseBlock (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:1145:23)
    at Parser.pp$1.parseStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:825:34)
    at Parser.pp$1.parseIfStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:965:26)
    at Parser.pp$1.parseStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:814:31)
    at Parser.pp$1.parseBlock (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:1145:23)
    at Parser.pp$1.parseTryStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:1041:21)
    at Parser.pp$1.parseStatement (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:818:32)
    at Parser.pp$1.parseBlock (C:\emsdk\upstream\emscripten\third_party\acorn\dist\acorn.js:1145:23) {
  pos: ?[33m2136?[39m,
  loc: Position { line: ?[33m61?[39m, column: ?[33m6?[39m },
  raisedAt: ?[33m2142?[39m
}
emcc: error: 'C:/emsdk/node/12.9.1_64bit/bin/node.exe C:\emsdk\upstream\emscripten\tools\acorn-optimizer.js C:\...\bin\physics.worker.js minifyWhitespace' failed (1)

Looks like it is complaining about this line in the outputted "bin/file.worker.js" file:

      import(e.data.urlOrBlob).then(function(Module) {
        return Module.default(Module);
      }).then(function(instance) {
        Module = instance;
        postMessage({ 'cmd': 'loaded' });
      });

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions