2013-02-25 45 views
5

Mới đối với clojurescript và làm việc thông qua hướng dẫn "CLJS" hiện đại here.Thư viện Clojurescript - goog.require không thể tìm thấy

Nó chỉ thị để kéo trong domina bằng cách thêm nó vào project.clj:

:dependencies [[org.clojure/clojure "1.4.0"] 
       [compojure "1.1.5"] 
       [domina "1.0.0"]] 

Và sau đó sử dụng nó trong kịch bản của bạn bằng cách tham khảo nó trong các hình thức ns

(ns cljstut.login 
    (:use [domina :only [by-id value]])) 

Tuy nhiên, khi tôi thực sự chạy trình duyệt này trong trình duyệt, tôi thấy phần sau trong nhật ký bảng điều khiển.

goog.require could not find: domina 

Có vẻ như tôi đang thiếu một số tuyên bố ở đâu đó? Nhưng như một newb, toàn bộ quá trình xây dựng này khá mờ đục. Mọi mẹo khắc phục sự cố đều được đánh giá cao.

Trả lời

3

Các phụ thuộc trong tệp project.clj và các khai báo không gian tên của bạn trông ổn.

Nếu bạn đang xây dựng mã clojurescript của mình bằng cách sử dụng lein cljsbuild auto, bạn sẽ cần phải khởi động lại quá trình đó. Tôi tin rằng nó sẽ tự động kéo vào các phụ thuộc mới sau khi khởi động lại.

Nếu điều đó không hoạt động hoặc bạn không sử dụng lein cljsbuild auto, hãy thử chạy lệnh lein deps bên trong thư mục dự án của bạn theo cách thủ công - nó sẽ tìm nạp tất cả phụ thuộc bị thiếu từ kho lưu trữ từ xa.

+1

Tôi đã thực sự vừa nhận được thông qua điều này, và tôi nghĩ rằng nó có thể đã được domina 1.0.1 mà cố định nó? Một cái gì đó về goog-jar hoặc một cái gì đó là một phụ thuộc trong 1.0.0 và nó không còn mất đó. Điều đó có vẻ hợp lý không? – BnWasteland

+0

Ah vâng, điều đó có ý nghĩa. Tôi tin rằng với 'domina 1.0.0', bạn phải thêm một sự phụ thuộc rõ ràng vào google clojure bên thứ ba lib để làm cho mọi thứ hoạt động. – mtyaka

+1

Khởi động lại 'lein cljsbuild auto' làm việc cho tôi vì một lỗi tương tự. – verma

1

Tôi đang trong quá trình cập nhật clj hiện đại lên phiên bản mới nhất của các plugin lib và lib đã sử dụng. Tại thời điểm này tôi đã cập nhật chuỗi lên đến hướng dẫn thứ 7 của loạt bài này. Bây giờ bạn sẽ được an toàn bằng cách cập nhật lên domina 1.0.2-SNAPSHOT vào project.cljs: dependencies và lein-cljsbuild 0.3.0 vào project.cljs: plugins.

Mimmo

1

Chỉ muốn nói thêm rằng một lỗi đánh máy trong không gian tên sẽ kích hoạt cùng một thông điệp báo lỗi:

goog.require không thể tìm thấy: Domina

Ví dụ (chú ý thiếu "j" trong hiện đại-cljs):

(ns modern-cls.login 
    (:use [domina :only [by-id value]])) 

Tôi đã sử dụng một tên dự án khác, do đó một không gian tên khác nhau chỉ là dũng cảm. Nó cắn tôi trong ass khi tôi copy-dán từ hướng dẫn và các lỗi đã cho tôi bối rối trong một thời gian :)

3

Ngoài ra, hãy chắc chắn rằng bạn đã lưu tệp project.clj của bạn và cố gắng chạy lein cleanlein cljsbuild clean.

0

Tôi đã gặp phải sự cố tương tự này khi làm việc thông qua hướng dẫn "CLJS hiện đại". Vấn đề của tôi là vô tình thêm sự phụ thuộc "domina" vào phần: plugins của project.clj thay vì phần phụ thuộc.

0

Tôi đã vượt qua thông báo lỗi này bằng cách đặt các dòng theo thứ tự đúng trong tệp index.html.

đúng thứ tự:

<script src="js/expanding_gases.js" type="text/javascript"></script> 
<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script> 

trật tự sai:

<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script> 
<script src="js/expanding_gases.js" type="text/javascript"></script> 

Bằng cách này một đọc tốt cho sự hiểu biết 'goog' thông điệp là ở đây: https://github.com/clojure/clojurescript/wiki/Quick-Start

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