Re: ESR52 SpiderMonkey & ES6
Philip Chimento <[email protected]> Thu, 26 Jul 2018 08:14:49 -0700 (PDT)
| Newsgroups | gmane.comp.mozilla.devel.jseng |
|---|---|
| Message-ID | <[email protected]> |
On Saturday, June 23, 2018 at 3:25:33 PM UTC-4, Jason Orendorff wrote: > You're right, this is super complicated. :-\ > > Well, I guess the first task is to get an error message. There's no pending > exception when these functions return false? > > -j > > > On Wed, Jun 20, 2018 at 3:11 PM, Kent Williams <[email protected]> > wrote: > > > Been beating my head on this for a couple of days. > > > > I'm trying to get ES6 module support working with ESR52 SpiderMonkey. > > > > I can run plain scripts just fine, but if I try using ES6 modules, it > > breaks. > > > > I solved one problem: You can't compile anything 'import' in it without > > setting the Module resolver with JS::SetModuleResolveHook. > > > > Then it turns out you can't use JS::Compile with any code with 'import' in > > it -- even if it isn't a module itself. > > > > But if you use JS::CompileModule, it isn't clear what you have to do to > > execute the script. > > > > What should happen is that you do X (where X is unknown) to execute the > > script, and then the interpreter handles the 'import' statements in your > > code by calling the resolve hook. > > > > So my problem is X -- if you have to use JS::CompileModule if there are > > any import statements in a script, how do you execute the script? > > > > Looking at the JS Shell code, the resolve hook is actually in a Javascript > > file. I tried doing what that file does (ModuleLoader.js) but it doesn't > > work. I call ModuleDeclarationInstantiation followed by ModuleEvaluation > > -- and both fail without any error message. They return false, and there's > > no apparent error message anywhere. > > > > Is it the case that no one uses ES6 modules with SpiderMonkey, except > > perhaps the Mozilla Browswer & the js shell included? We have a branch in progress for this in GJS: https://gitlab.gnome.org/GNOME/gjs/merge_requests/150 It's currently still based on ESR52, but the basics do seem to work. There's some information there that may help you. I believe the module is executed during the ModuleEvaluation step. Regards, Philip