Rozwiązywanie modułów za pomocą require.js i Java / Rhino
Próbuję pobrać require.js, aby załadować moduły po stronie serwera z Java 6 i Rhino.
Jestem w stanie załadować plik require.js w porządku. Rhino widzirequire()
funkcjonować. Mogę powiedzieć, ponieważ Rhino skarży się, że nie może znaleźć funkcji, gdy się zmieniamrequire()
do czegoś innegorequireffdkj()
.
Ale kiedy próbuję wymagać nawet prostego JS, jakhello.js
var hello = 'hello';
korzystając z jednej z następujących opcji:
require('hello');
require('./hello');
to nie działa. dostaję
Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.JavaScriptException: [object Error] (<Unknown source>#31) in <Unknown source> at line number 31
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
mam mojehello.js
na górze ścieżki klasy Java. Właśnie tam mamrequire.js
także. Próbowałem się ruszyćhello.js
wszędzie mogłem pomyśleć, że może się udać, włączając w to katalog główny mojego dysku twardego, katalog główny mojego katalogu użytkownika, katalog, z którego uruchamiam moją aplikację Java itp. Nic nie działa.
Spojrzałem na specyfikację CommonJS (http://wiki.commonjs.org/wiki/Modules/1.0) i mówi, że identyfikatory najwyższego poziomu (jakhello
) są rozwiązywane z „konceptualnego korzenia przestrzeni nazw modułu”, podczas gdy względne identyfikatory (jak./hello
) są rozwiązywane przeciwko modułowi wywołującemu. Nie jestem pewien, gdzie jest jedna z tych linii bazowych i podejrzewam, że to jest ten problem.
Jakieś sugestie? Czy mogę nawet używać require.js z Rhino?
EDYTOWAĆ: Myśląc, że muszę przygotować środowisko zgodnie z sugestią Pointy'ego w poniższym komentarzu, spróbowałem dokonać ocenyr.js
także. (Próbowałem ocenić po ocenierequire.js
, a potem jeszcze razrequire.js
.) W obu przypadkach pojawia się błąd:
Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "arguments" is not defined. (<Unknown source>#19) in <Unknown source> at line number 19
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
„argumenty” wydają się być zmienną wr.js
. Myślę, że to argumenty linii poleceń, więc nie sądzęr.js
jest właściwą ścieżką do tego, co próbuję zrobić. Nie jestem jednak pewien.