2012-06-17 16 views
8

我試圖讓require.js在服務器端使用Java 6和Rhino加載模塊。解決使用require.js和Java/Rhino的模塊

我可以加載require.js本身就好。犀牛可以看到require()的功能。我可以說,因爲犀牛抱怨說,當我將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(如./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是我正在嘗試做的事情的正確途徑。但不知道。

+0

有些東西需要提供require.js期望的來自瀏覽器的API;也就是說,圖書館使用網絡瀏覽器工具來加載腳本。你在做什麼來使這些可用? – Pointy

+0

也許沒什麼。 :-) 我需要什麼?如果你想使用Clojure編譯器,我發現有一個compiler.jar,但那不是我。我還看到了rhino.jar,但它看起來就像是犀牛本身,Java 6已經包含了它。 –

+0

嗯,我不是100%確定require.js是做什麼的,但是例如許多這樣的庫通過在瀏覽器中構建新的'

相關問題