If I try to run JS tests for one of my libraries, I get the following Err:
C:\> fant -js afIocEnv
sys::Err: Pod eval failed: afIoc
compilerJs::Runner.evalPodScript (Runner.fan:79)
fan.sys.List.each (List.java:588)
compilerJs::Runner.evalPodScript (Runner.fan:73)
compilerJs::TestRunner.evalPod (TestRunner.fan:79)
compilerJs::TestRunner.main (TestRunner.fan:55)
...
Cause:
sys::Err: javax.script.ScriptException:
sun.org.mozilla.javascript.internal.EcmaError:
TypeError: Cannot read property "NotFoundErr" from undefined
(<Unknown source>#3956) in <Unknown source> at line number 3956
com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:156)
com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:170)
javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:247)
compilerJs::Runner.evalPodScript (Runner.fan:78)
fan.sys.List.each (List.java:588)
compilerJs::Runner.evalPodScript (Runner.fan:73)
compilerJs::TestRunner.evalPod (TestRunner.fan:79)
compilerJs::TestRunner.main (TestRunner.fan:55)
...
Which, as it turns out, is because compilerJs::Runner doesn't load scripts for transitive dependencies.
In this particular case the dependency tree is afIocEnv -> afIoc -> afBeanUtils. As in afIocEnv has no direct dependency on afBeanUtils but afIoc does.
When Runner loads a script, it should really try to load transitive dependencies first.
In the mean time, the obvious workaround is to make afBeanUtils a direct dependency of afIocEnv.
andyMon 8 Feb 2016
Ticket promoted to #2506 and assigned to andy
andyThu 8 Jun 2017
@Steve - this may still be true - but I just made our NodeJS runner the default for fant - so may work differently now.
Could you verify this is still an issue against tip?
SlimerDudeMon 12 Jun 2017
Running on JDK 1.6 still gives Rhino errors:
C:\Projects\.f4\ScratchPad>fant -js afIocEnv
sys::Err: Pod eval failed: afIoc
compilerJs::Runner.evalPodScript (Runner.fan:79)
...
Cause:
sys::Err: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing name after . operator (<Unknown source>#8947) in <Unknown source> at line number 8947
com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:156)
com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:170)
javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:247)
compilerJs::Runner.evalPodScript (Runner.fan:78)
...
and on JDK 1.8 get (a more detailed) Nashorn error:
SlimerDude Sat 6 Feb 2016
If I try to run JS tests for one of my libraries, I get the following Err:
C:\> fant -js afIocEnv sys::Err: Pod eval failed: afIoc compilerJs::Runner.evalPodScript (Runner.fan:79) fan.sys.List.each (List.java:588) compilerJs::Runner.evalPodScript (Runner.fan:73) compilerJs::TestRunner.evalPod (TestRunner.fan:79) compilerJs::TestRunner.main (TestRunner.fan:55) ... Cause: sys::Err: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot read property "NotFoundErr" from undefined (<Unknown source>#3956) in <Unknown source> at line number 3956 com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:156) com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:170) javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:247) compilerJs::Runner.evalPodScript (Runner.fan:78) fan.sys.List.each (List.java:588) compilerJs::Runner.evalPodScript (Runner.fan:73) compilerJs::TestRunner.evalPod (TestRunner.fan:79) compilerJs::TestRunner.main (TestRunner.fan:55) ...Which, as it turns out, is because
compilerJs::Runnerdoesn't load scripts for transitive dependencies.In this particular case the dependency tree is
afIocEnv -> afIoc -> afBeanUtils. As inafIocEnvhas no direct dependency onafBeanUtilsbutafIocdoes.When
Runnerloads a script, it should really try to load transitive dependencies first.In the mean time, the obvious workaround is to make
afBeanUtilsa direct dependency ofafIocEnv.andy Mon 8 Feb 2016
Ticket promoted to #2506 and assigned to andy
andy Thu 8 Jun 2017
@Steve - this may still be true - but I just made our NodeJS runner the default for fant - so may work differently now.
Could you verify this is still an issue against tip?
SlimerDude Mon 12 Jun 2017
Running on JDK 1.6 still gives Rhino errors:
C:\Projects\.f4\ScratchPad>fant -js afIocEnv sys::Err: Pod eval failed: afIoc compilerJs::Runner.evalPodScript (Runner.fan:79) ... Cause: sys::Err: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing name after . operator (<Unknown source>#8947) in <Unknown source> at line number 8947 com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:156) com.sun.script.javascript.RhinoScriptEngine.eval (RhinoScriptEngine.java:170) javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:247) compilerJs::Runner.evalPodScript (Runner.fan:78) ...and on JDK 1.8 get (a more detailed) Nashorn error:
C:\Projects\.f4\ScratchPad>fant -js afIocEnv sys::Err: Pod eval failed: afIoc compilerJs::Runner.evalPodScript (Runner.fan:79) ... Cause: sys::Err: javax.script.ScriptException: TypeError: Cannot read property "NotFoundErr" from undefined in <eval> jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException (NashornScriptEngine.java:467) jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:451) jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:403) jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl (NashornScriptEngine.java:399) jdk.nashorn.api.scripting.NashornScriptEngine.eval (NashornScriptEngine.java:155) javax.script.AbstractScriptEngine.eval (AbstractScriptEngine.java:264) compilerJs::Runner.evalPodScript (Runner.fan:78) ...Note that both errors still point to not loading transitive dependencies.
andy Mon 12 Jun 2017
Make sure you do a
buildall- tip no longer uses Rhino/Nashhorn via Java - will always look for NodeJS (and so also need to install NodeJS :)SlimerDude Mon 12 Jun 2017
Urgh... :(
This'll have to wait until I need it then...