execjs icon indicating copy to clipboard operation
execjs copied to clipboard

Problem compiling KaTeX

Open drewsberry opened this issue 9 years ago • 0 comments

I've been using ExecJS for compiling KaTeX for a while now (see repo https://github.com/drewsberry/jekyll-katex-block).

After upgrading from 2.2.2 (where it worked perfectly), versions 2.3.0 and 2.4.0 cannot compile katex.js, giving the error TypeError: Cannot set property 'katex' of undefined (ExecJS::ProgramError). I downloaded katex.min.js version 0.2.0 from https://github.com/Khan/KaTeX/releases. ExecJS version 2.2.2 compiles the same file without problem.

The full trace is below:

p ((execjs):1:563): TypeError: Cannot set property 'katex' of undefined (ExecJS::ProgramError)
        from (execjs):1:568
        from (execjs):11:14
        from (execjs):1:102
        from Object.<anonymous> ((execjs):1:120)
        from Module._compile (module.js:460:26)
        from Object.Module._extensions..js (module.js:478:10)
        from Module.load (module.js:355:32)
        from Function.Module._load (module.js:310:12)
        from Function.Module.runMain (module.js:501:10)
        from /var/lib/gems/2.1.0/gems/execjs-2.4.0/lib/execjs/external_runtime.rb:32:in `exec'
        from /var/lib/gems/2.1.0/gems/execjs-2.4.0/lib/execjs/external_runtime.rb:14:in `initialize'
        from /var/lib/gems/2.1.0/gems/execjs-2.4.0/lib/execjs/runtime.rb:44:in `new'
        from /var/lib/gems/2.1.0/gems/execjs-2.4.0/lib/execjs/runtime.rb:44:in `compile'
        from /var/lib/gems/2.1.0/gems/execjs-2.4.0/lib/execjs/module.rb:27:in `compile'
        from execjs-katex.rb:4:in `<main>'

It seems like it might have to do with the following line in katex.min.js:

... "undefined" != typeof window ? window.katex = e() : global.katex = e() ...

In 2.2.2, running ExecJS.eval "typeof global" returns Object, whereas in 2.4.0 it returns undefined.

I'm using Node.js v0.12.1 for the runtime.

drewsberry avatar Mar 30 '15 15:03 drewsberry