On Sun, Jun 11, 2017 at 7:16 PM, sebb <seb...@gmail.com> wrote: > On 11 June 2017 at 00:14, Sam Ruby <ru...@intertwingly.net> wrote: >> On Sat, Jun 10, 2017 at 6:39 PM, sebb <seb...@gmail.com> wrote: >>> On 10 June 2017 at 23:20, Sam Ruby <ru...@intertwingly.net> wrote: >>>> On Sat, Jun 10, 2017 at 6:15 PM, sebb <seb...@gmail.com> wrote: >>>>> On 10 June 2017 at 17:22, Sam Ruby <ru...@intertwingly.net> wrote: >>>>>> On Sat, Jun 10, 2017 at 12:05 PM, sebb <seb...@gmail.com> wrote: >>>>>>> On 10 June 2017 at 16:58, Sam Ruby <ru...@intertwingly.net> wrote: >>>>>>>> On Sat, Jun 10, 2017 at 11:48 AM, sebb <seb...@gmail.com> wrote: >>>>>>>>> On 10 June 2017 at 15:57, Sam Ruby <ru...@intertwingly.net> wrote: >>>>>>>>>> On Sat, Jun 10, 2017 at 10:27 AM, sebb <seb...@gmail.com> wrote:
[snip] >>> >>> I don't know where to start with ExecJS. >> >> Neither do I. >> >>> But it ought to be possible to use window.onerror or similar in the >>> generated code to catch/display the error to the user. >> >> There is no window object on the server. >> >>> Or wrap the generated JS in try/catch. >> >> And do what? > > Display err.stack > > for example: > > try { > ... > } catch(err) { > alert(err.stack); > console.log(err.stack); > etc. > } > > However I've no idea how to add that to the generated code. > > It might be worth seeing what the following gives: > > rescue ExecJS::ProgramError => e > Wunderbar.error e.inspect > > It may be that the error object has more info embedded. With no window object on the server, there is no window.alert. There is no console object on the server either. Lets try this the other way. I've included a sample program below with no dependencies other than execjs: require 'execjs' source = %{ function test () { try { var x = null; x.y(); } catch(err) { alert(err.stack); console.log(err.stack); } } } context = ExecJS.compile(source); context.call("test()"); - Sam Ruby