2012-11-10 23 views
4

我在編譯時:入門「無法設置的未定義的屬性錯誤」試圖運行一個簡單的Hello World的.js文件輸出clojurescript

(ns example.hello) 
(js/console.log "Hello from ClojureScript!") 

利用這種配置:

(defproject lein-cljsbuild-example "1.2.3" 
    :plugins [[lein-cljsbuild "0.2.9"]] 
    :cljsbuild { 
    :builds [{ 
     :source-path "src-cljs" 
     :compiler { 
      :output-to "war/javascripts/mainz.js" ; default: main.js in current directory 
      ;:optimizations :simple 
      :target :nodejs 
      ;:pretty-print true 
      }}]}) 

哪輸出一個文件太大而不能放在這裏,但給出了錯誤:

goog.debug.Error = function(opt_msg) { 
       ^
TypeError: Cannot set property 'Error' of undefined 
    at Object.<anonymous> (/Users/myuser/Clojure/cljstest/war/javascripts/mainz.js:503:18) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 
    at process.startup.processNextTick.process._tickCallback (node.js:244:9) 
+0

看起來像goog.debug是未定義的..你是否包括正確的文件? – lostsource

+0

@lostsource什麼是正確的文件?我認爲生成的.js是自動完成的。也許它缺少一些node.js擴展? – MaiaVictor

回答

0

該錯誤已通過重新安裝leiningen並執行清理構建解決。

2

那麼,在你給的項目配置中,你的:optimizations :simple子句被註釋掉。這意味着它不會有任何Google Closure優化,這意味着輸出的JavaScript將而不是在一個足夠的文件中,但分成許多文件。這也意味着您必須明確包含Google Closure庫中的base.js

看起來就是這裏發生了什麼,儘管可能還有其他的東西在發生......我其實並不熟悉ClojureScript的node.js輸出。

+0

幫助了我,謝謝! – Gonzih

相關問題