我正在尝试让 require.js 使用 Java 6 和 Rhino 在服务器端加载模块。
我能够加载 require.js 本身就好了。Rhino 可以看到这个require()
功能。我可以说出来,因为 Rhino 抱怨当我更改require()
为requireffdkj()
.
但是当我尝试需要一个简单的 JS 时,比如hello.js
var hello = 'hello';
使用以下任一方法:
require('hello');
require('./hello');
它不起作用。我明白了
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)
我hello.js
在 Java 类路径的顶部有我的。这也是我所拥有require.js
的。我尝试移动到hello.js
任何我认为可能会移动的地方,包括我的硬盘驱动器的根目录、我的用户目录的根目录、我正在运行我的 Java 应用程序的目录等。没有任何效果。
我查看了 CommonJS 规范(http://wiki.commonjs.org/wiki/Modules/1.0),它说顶级 ID(如hello
)是从“概念模块名称空间根”解析的,而相对 ID( like ./hello
) 针对调用模块进行解析。我不确定这些基线在哪里,我怀疑这就是问题所在。
有什么建议么?我什至可以使用 Rhino 的 require.js 吗?
编辑:认为我需要按照 Pointy 在下面评论中的建议设置环境,我也尝试评估r.js
。(我在评估之后尝试评估require.js
,然后在之前再次评估require.js
。)在任何一种情况下,我都会收到错误:
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)
“参数”似乎是一个变量r.js
。我认为它是用于命令行参数的,所以我认为这不是r.js
我想要做的事情的正确路径。不过不确定。