Resolvendo módulos usando require.js e Java / Rhino
Eu estou tentando obter require.js para carregar módulos no lado do servidor com o Java 6 e Rhino.
Eu sou capaz de carregar require.js muito bem. Rinoceronte pode ver orequire()
função. Eu posso dizer porque Rhino reclama que não pode encontrar a função quando eu mudarrequire()
para outra coisa comorequireffdkj()
.
Mas quando eu tento exigir até mesmo um JS simples, comohello.js
var hello = 'hello';
usando um dos seguintes:
require('hello');
require('./hello');
não funciona eu recebo
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)
eu tenho meuhello.js
no topo do caminho de classe Java. É onde eu tenhorequire.js
também. Eu tentei me moverhello.js
em todos os lugares que eu poderia pensar que poderia ir, incluindo a raiz do meu disco rígido, a raiz do meu diretório de usuários, o diretório a partir do qual eu estou executando o meu aplicativo Java, etc Nada funciona.
Eu olhei para as especificações do CommonJS (http://wiki.commonjs.org/wiki/Modules/1.0) e diz que IDs de nível superior (comohello
) são resolvidos a partir do "módulo conceitual nome espaço raiz", enquanto IDs relativos (como./hello
) são resolvidos contra o módulo de chamada. Não tenho certeza de onde essas linhas de base estão, e suspeito que esse seja o problema.
Alguma sugestão? Posso usar o require.js do Rhino?
EDITAR: Pensando que eu preciso definir o ambiente de acordo com a sugestão de Pointy no comentário abaixo, eu tentei avaliarr.js
também. (Eu tentei avaliar depois de avaliarrequire.js
e, novamente, antesrequire.js
.) Em qualquer um dos casos, recebo um erro:
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)
"argumentos" parece ser uma variável emr.js
. Eu acho que é para argumentos de linha de comando, então eu não achor.js
é o caminho certo para o que estou tentando fazer. Não tenho certeza embora.