2012-06-17 41 views
8

Estoy tratando de obtener require.js para cargar módulos en el lado del servidor con Java 6 y Rhino.Resolviendo módulos usando require.js y Java/Rhino

Soy capaz de cargar require.js en sí mismo muy bien. Rhino puede ver la función require(). Puedo decirlo porque Rhino se queja de que no puede encontrar la función cuando cambio require() a otra cosa como requireffdkj().

Pero cuando trato de requerir incluso un simple JS, como hello.js

var hello = 'hello'; 

utilizando cualquiera de los siguientes:

require('hello'); 
require('./hello'); 

no funciona. Puedo obtener

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) 

tengo mi hello.js en la parte superior de la ruta de clases de Java. Ahí es donde tengo require.js también. Intenté mover hello.js a todas partes donde pudiera pensar que podría ir, incluida la raíz de mi disco duro, la raíz de mi directorio de usuarios, el directorio desde el que estoy ejecutando mi aplicación Java, etc. Nada funciona.

Miré a la especificación CommonJS (http://wiki.commonjs.org/wiki/Modules/1.0) y se dice que los ID de nivel superior (como hello) se resuelven desde la "raíz espacio conceptual nombre del módulo", mientras identificadores relativos (como ./hello) se resuelven en contra del módulo de llamadas . No estoy seguro de dónde están esas líneas de base, y sospecho que ese es el problema.

¿Alguna sugerencia? ¿Puedo usar require.js de Rhino?

EDIT: Pensando que tengo que configurar el entorno según la sugerencia de Pointy en el comentario siguiente, intenté evaluar r.js también. (He intentado evaluar después de evaluar require.js, y luego de nuevo antes de require.js.) En cualquier caso, me sale un error:

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 una variable en r.js. Creo que es para argumentos de línea de comando, así que no creo que r.js sea la ruta correcta para lo que estoy tratando de hacer. Aunque no estoy seguro

+0

Algo va a tener que proporcionar las API que require.js espera del navegador; es decir, la biblioteca utiliza las funciones del navegador web para cargar scripts. ¿Qué estás haciendo para que estén disponibles? – Pointy

+0

Probablemente nada. :-) ¿Qué necesito? Vi que hay un compiler.jar si quieres usar el compilador de Clojure, pero ese no soy yo. También vi rhino.jar, pero parecía que era para Rhino, que Java 6 ya incluye. –

+0

Bueno, no estoy 100% seguro de lo que requiere require.js, pero, por ejemplo, muchas de esas bibliotecas obtienen scripts construyendo nuevas etiquetas '

Cuestiones relacionadas