2012-06-17 31 views
8

Tôi đang cố gắng tải require.js để tải các mô-đun ở phía máy chủ với Java 6 và Rhino.Giải quyết các mô-đun bằng require.js và Java/Rhino

Tôi có thể tải require.js cho chính nó. Tê giác có thể thấy hàm require(). Tôi có thể nói vì Rhino phàn nàn rằng nó không thể tìm thấy chức năng khi tôi thay đổi require() thành một cái gì đó khác như requireffdkj().

Nhưng khi tôi cố gắng để yêu cầu ngay cả một JS đơn giản, giống như hello.js

var hello = 'hello'; 

bằng cách sử dụng các nội dung sau:

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

nó không hoạt động. Tôi nhận được

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) 

Tôi có hello.js ở đầu đường dẫn lớp Java. Đó là nơi tôi cũng có require.js. Tôi đã thử di chuyển hello.js ở khắp mọi nơi mà tôi có thể nghĩ rằng nó có thể đi, bao gồm thư mục gốc của ổ cứng, thư mục gốc của thư mục người dùng, thư mục mà tôi đang chạy ứng dụng Java của mình, v.v.

Tôi nhìn spec CommonJS (http://wiki.commonjs.org/wiki/Modules/1.0) và nó nói rằng ID cấp cao nhất (như hello) được giải quyết từ "không gian gốc tên module khái niệm", trong khi ID tương đối (như ./hello) được giải quyết chống lại các module gọi . Tôi không chắc một trong hai đường cơ sở đó là gì và tôi nghi ngờ đó là vấn đề.

Mọi đề xuất? Tôi có thể sử dụng require.js từ Rhino được không?

EDIT: Suy nghĩ rằng tôi cần đặt môi trường theo đề xuất của Pointy trong nhận xét bên dưới, tôi cũng đã thử đánh giá r.js. (Tôi đã thử đánh giá sau khi đánh giá require.js, và sau đó một lần nữa trước khi require.js.) Trong cả hai trường hợp tôi nhận được một lỗi:

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) 

"lập luận" dường như là một biến trong r.js. Tôi nghĩ rằng đó là đối số dòng lệnh, vì vậy tôi không nghĩ rằng r.js là con đường đúng cho những gì tôi đang cố gắng làm. Không chắc chắn mặc dù.

+0

Có điều gì đó sẽ phải cung cấp các API mà require.js mong đợi từ trình duyệt; nghĩa là thư viện sử dụng các cơ sở trình duyệt web để tải các tập lệnh. Bạn đang làm gì để làm những thứ đó? – Pointy

+0

Có lẽ không có gì. :-) Tôi cân nhưng gi? Tôi thấy rằng có một compiler.jar nếu bạn muốn sử dụng trình biên dịch Clojure, nhưng đó không phải là tôi. Ngoài ra tôi đã thấy rhino.jar, nhưng nó trông giống như đối với Rhino, mà Java 6 đã bao gồm. –

+0

Tôi không chắc chắn 100% những gì require.js làm, nhưng ví dụ như nhiều thư viện như vậy lấy các tập lệnh bằng cách xây dựng các thẻ '

Các vấn đề liên quan