Oops, there's an open case to bring lein-cljsbuild's default compiler 
version up to r1586: https://github.com/emezeske/lein-cljsbuild/issues/186. 
 I will try to get to that soon.

In the meantime, you should be able to add [org.clojure/clojurescript 
"0.0-1586"] to your :deps to get the latest version.

On Thursday, March 14, 2013 2:25:49 PM UTC-7, David Nolen wrote:
>
> I'm not sure if lein-cljsbuild uses the latest release of ClojureScript - 
> Evan would know. In general I think it's probably best to just specify the 
> version of ClojureScript you want to use yourself to avoid any issues.
>
>
> On Thu, Mar 14, 2013 at 5:21 PM, Rohan Nicholls 
> <rohan.n...@gmail.com<javascript:>
> > wrote:
>
>> I have been in touch with the writer of the modern-cljs tutorial, and he 
>> thinks that 
>> a library include is missing that used to be a problem, but was fixed.  
>> It looks like
>> the problem is back. 
>>
>> You can follow the issue and discussion here:
>>
>> https://github.com/magomimmo/modern-cljs/issues/38
>>
>> And a huge thank-you to mimmo for looking into this so quickly.
>>
>>
>> On Wednesday, 13 March 2013 13:39:51 UTC+1, Rohan Nicholls wrote:
>>>
>>> Hey all, 
>>>
>>> I have been experimenting with clojurescript and following the modern 
>>> tutorial. 
>>>
>>> However I am now stuck while trying to get the browser repl (brepl) 
>>> working. 
>>>
>>> I looked on the clojurescript jira tracker and there was no mention of 
>>> this problem.  There was no way to add an issue, so I thought I would 
>>> post here as this is what is mentioned on the clojurescript page. 
>>>
>>> This issue means no brepl, which pretty much brings any further 
>>> investigation of clojurescript to a halt. 
>>>
>>> Thanks in advance for any help. 
>>>
>>> Rohan 
>>>
>>> The details: 
>>>
>>> I was following this tutorial: 
>>> https://github.com/magomimmo/**modern-cljs/blob/master/doc/**
>>> tutorial-02.md<https://github.com/magomimmo/modern-cljs/blob/master/doc/tutorial-02.md>
>>>  
>>>
>>> I have a static web server running, I get a repl by executing: 
>>>
>>> lein trampoline cljsbuild repl-listen 
>>>
>>> And then I go to the simple.html page being served up by my server: 
>>>
>>> http://localhost:8888/simple.**html <http://localhost:8888/simple.html> 
>>>
>>> At this point according to the tutorial I should be good to go, and 
>>> the repl from the cljsbuild command given in the terminal earlier 
>>> should work. 
>>>
>>> However, it hangs, and so I opened the console and saw these errors. 
>>>
>>> Uncaught TypeError: Cannot call method 'call' of undefined  on line 
>>> 989 of repl 
>>>
>>> Which is actually caused by: 
>>>
>>> Uncaught TypeError: Cannot read property 'client' of undefined on line 
>>> 1021 of repl 
>>>
>>> The source comes from this url: 
>>> http://localhost:9000/repl?**xpc=%7B%22cn%22%3A%**
>>> 22ScD89D6Sbo%22%2C%22tp%22%**3Anull%2C%22osh%22%3Anull%2C%**
>>> 22ppu%22%3A%22http%3A%2F%**2Flocalhost%3A3000%2Frobots.**
>>> txt%22%2C%22lpu%22%3A%22http%**3A%2F%2Flocalhost%3A9000%**
>>> 2Frobots.txt%22%7D<http://localhost:9000/repl?xpc=%7B%22cn%22%3A%22ScD89D6Sbo%22%2C%22tp%22%3Anull%2C%22osh%22%3Anull%2C%22ppu%22%3A%22http%3A%2F%2Flocalhost%3A3000%2Frobots.txt%22%2C%22lpu%22%3A%22http%3A%2F%2Flocalhost%3A9000%2Frobots.txt%22%7D>
>>>  
>>>
>>> which after some grepping is coming from: 
>>> <project root>/repl/client.js 
>>>
>>> And sure enough if I go to the offending line I see this: 
>>>
>>> </script><script type="text/javascript"> 
>>>           clojure.browser.repl.client.**start("http://localhost:9000";)**; 
>>>
>>> Uncaught TypeError: Cannot read property 'client' of undefined 
>>>           </script></body></html> 
>>>
>>> evaluating the clojure object indeed gives us clojure.browser.repl but 
>>> the repl object has no client. 
>>>
>>> I started looking into this in more depth and found that indeed the 
>>> code that defines a client and the start function which is found one 
>>> line up: 
>>>
>>> clojure.browser.repl.client={}**; 
>>> clojure.browser.repl.client.**start=function(a){ 
>>>   return goog.events.listen(window,"**load",function(){ 
>>>     return clojure.browser.repl.start_**evaluator.call(null,a) 
>>>   }) 
>>> }; 
>>>
>>> The ...repl.start_evaluator exists, and looks like this: 
>>>
>>> clojure.browser.repl.start_**evaluator=function(a){ 
>>>         var b=clojure.browser.net.xpc_**connection.call(null); 
>>>         if(cljs.core.truth_(b)**){ 
>>>                 var c=clojure.browser.net.xhr_**connection.call(null); 
>>>                 clojure.**browser.event.listen.call(**
>>> null,c,"\ufdd0'success",**function(a){ 
>>>                         return clojure.browser.net.transmit.**
>>> call(null,b,"\ufdd0'evaluate-**javascript",a.currentTarget.**
>>> getResponseText(cljs.core.**List.EMPTY)) 
>>>                 }); 
>>>                 clojure.**browser.net.register_service.**
>>> call(null,b,"\ufdd0'send-**result",function(b){ 
>>>                         return clojure.browser.repl.send_**
>>> result.call(null,c,a,clojure.**browser.repl.wrap_message.**call(null,"\ufdd0'result",b))
>>>  
>>>
>>>                 }); 
>>>                 clojure.**browser.net.register_service.**
>>> call(null,b,"\ufdd0'print",**function(b){ 
>>>                         return clojure.browser.repl.send_**
>>> print.call(null,a,clojure.**browser.repl.wrap_message.**call(null,"\ufdd0'print",b))
>>>  
>>>
>>>                 }); 
>>>                 clojure.**browser.net.connect.call(null,**
>>> b,cljs.core.constantly.call(**null,null)); 
>>>                 return setTimeout(function(){ 
>>>                         return clojure.browser.repl.send_**
>>> result.call(null,c,a,clojure.**browser.repl.wrap_message.**
>>> call(null,"\ufdd0'ready","**ready")) 
>>>                 },50) 
>>>         } 
>>>         return alert("No 'xpc' param provided to child iframe.") 
>>> } 
>>>
>>>
>>>
>>> There is no obvious place where this goes wrong within the 
>>> start_evaluator, as all the methods that are called, exist.  So here 
>>> is the function (prettyfied) where the error occurs. 
>>>
>>> Uncaught TypeError: Cannot call method 'call' of undefined  on line 
>>> 989 of repl 
>>>
>>> clojure.browser.net.connect=**function(){ 
>>>         var a=null, 
>>>         b=function(a){ 
>>>                 var b; 
>>>                 
>>> b=a?a.clojure$**browser$net$IConnection$**connect$arity$1:a; 
>>>
>>>                 if(b) 
>>>                         return a.clojure$browser$net$**
>>> IConnection$connect$arity$1(a)**; 
>>>                 
>>> b=clojure.**browser.net.connect[goog.**typeOf(null==a?null:a)]; 
>>>
>>>                 if(!b&&(b=**clojure.browser.net.connect._,**!b)) 
>>>                         throw cljs.core.missing_protocol.**
>>> call(null,"IConnection.**connect",a); 
>>>                 return b.call(null,a) 
>>>                 }, 
>>>         c=function(a,b){ 
>>>                 var c; 
>>>                 
>>> c=a?a.clojure$**browser$net$IConnection$**connect$arity$2:a; 
>>>
>>>                 if(c) 
>>>                         return a.clojure$browser$net$**
>>> IConnection$connect$arity$2(a,**b); 
>>>                 
>>> c=clojure.**browser.net.connect[goog.**typeOf(null==a?null:a)]; 
>>>
>>>                 if(!c&&(c=**clojure.browser.net.connect._,**!c)) 
>>>                         throw cljs.core.missing_protocol.**
>>> call(null,"IConnection.**connect",a); 
>>>                 return c.call(null,a,b) 
>>>                 }, 
>>>         d=function(a,b,c){ 
>>>                         var d; 
>>>                         
>>> d=a?a.**clojure$browser$net$**IConnection$connect$arity$3:a; 
>>>
>>>                         if(d) 
>>>                               **  return a.clojure$browser$net$**
>>> IConnection$connect$arity$3(a,**b,c); 
>>>                         
>>> d=**clojure.browser.net.connect[**goog.typeOf(null==a?null:a)]; 
>>>
>>>                         if(!d&**&(d=clojure.browser.net.**connect._,!d)) 
>>>
>>>                               **  throw cljs.core.missing_protocol.**
>>> call(null,"IConnection.**connect",a); 
>>>                         return d.call(null,a,b,c) 
>>>                 }, 
>>>         e=function(a,b,c,d){ 
>>>                         var e; 
>>>                         
>>> e=a?a.**clojure$browser$net$**IConnection$connect$arity$4:a; 
>>>
>>>                         if(e) 
>>>                               **  return a.clojure$browser$net$**
>>> IConnection$connect$arity$4(a,**b,c,d); 
>>>                         
>>> e=**clojure.browser.net.connect[**goog.typeOf(null==a?null:a)]; 
>>>
>>>                         if(!e&**&(e=clojure.browser.net.**connect._,!e)) 
>>>
>>>                               **  throw cljs.core.missing_protocol.**
>>> call(null,"IConnection.**connect",a); 
>>>                         return e.call(null,a,b,c,d) 
>>>                 }, 
>>>         a=function(a,g,h,i){ 
>>>                         **switch(arguments.length){ 
>>>                               **  case 1:return b.call(this,a); 
>>>                               **  case 2:return c.call(this,a,g); 
>>>                               **  case 3:return d.call(this,a,g,h); 
>>>                               **  case 4:return e.call(this,a,g,h,i) 
>>>                         } 
>>>                         throw Error("Invalid arity: "+arguments.length); 
>>>                 }; 
>>>         a.cljs$lang$arity$1=b; 
>>>         a.cljs$lang$arity$2=c; 
>>>         a.cljs$lang$arity$3=d; 
>>>         a.cljs$lang$arity$4=e; 
>>>         return a}(); 
>>>
>>> I have not managed to walk through this as the debugger considers the 
>>> xpc material new every time so breakpoints get discarded on each 
>>> refresh. 
>>>
>>>
>>>
>>> My project.clj for the modern-cljs project: 
>>>
>>> (defproject modern-cljs "0.1.0-SNAPSHOT" 
>>>   :description "FIXME: write description" 
>>>   :url "http://example.com/FIXME"; 
>>>   :license {:name "Eclipse Public License" 
>>>             :url 
>>> "http://www.eclipse.org/legal/**epl-v10.html<http://www.eclipse.org/legal/epl-v10.html>"}
>>>  
>>>
>>>
>>>   ;; clj source code path 
>>>   :source-paths ["src/clj"] 
>>>   :dependencies  [[org.clojure/clojure  "1.5.1"] 
>>>                   [compojure            "1.1.5"]] 
>>>
>>>   ;; lein-cljsbuild plugin to build a cljs project 
>>>   :plugins [[lein-cljsbuild "0.3.0"] 
>>>             [lein-ring "0.8.3"]] 
>>>
>>>   :ring {:handler modern-cljs.core/handler} 
>>>
>>>   ;; cljsbuild options configuration 
>>>   :cljsbuild {:builds 
>>>               [{;; cljs source code path 
>>>                 :source-paths ["src/cljs"] 
>>>
>>>                 ;; google closure (CLS) options configuration 
>>>                 :compiler {;; CLS generated js script filename 
>>>                            :output-to "resources/public/js/modern.**js" 
>>>
>>>                            ;; minimal js optimization directive 
>>> :whitespace, :simple, :advanced 
>>>                            :optimizations :whitespace 
>>>
>>>                            ;; generated js code prettyfication 
>>>                            :pretty-print true}}]}) 
>>>
>>> I tried running it with compojure to see if this solved the problem, 
>>> but no luck. 
>>>
>>> Chrome version: Version 25.0.1364.155 
>>> Firefox version: 19.0 
>>>
>>> In firefox the lines are the same, but the error messages different: 
>>>
>>> [13:32:26.063] TypeError: cljs.core.merge is undefined @ 
>>> http://localhost:9000/repl?**xpc=%7B%22cn%22%3A%**
>>> 22VwwA1h4vDD%22%2C%22tp%22%**3Anull%2C%22osh%22%3Anull%2C%**
>>> 22ppu%22%3A%22http%3A%2F%**2Flocalhost%3A3000%2Frobots.**
>>> txt%22%2C%22lpu%22%3A%22http%**3A%2F%2Flocalhost%3A9000%**
>>> 2Frobots.txt%22%7D:989<http://localhost:9000/repl?xpc=%7B%22cn%22%3A%22VwwA1h4vDD%22%2C%22tp%22%3Anull%2C%22osh%22%3Anull%2C%22ppu%22%3A%22http%3A%2F%2Flocalhost%3A3000%2Frobots.txt%22%2C%22lpu%22%3A%22http%3A%2F%2Flocalhost%3A9000%2Frobots.txt%22%7D:989>
>>>  
>>>
>>> [13:32:26.064] TypeError: clojure.browser.repl is undefined @ 
>>> http://localhost:9000/repl?**xpc=%7B%22cn%22%3A%**
>>> 22VwwA1h4vDD%22%2C%22tp%22%**3Anull%2C%22osh%22%3Anull%2C%**
>>> 22ppu%22%3A%22http%3A%2F%**2Flocalhost%3A3000%2Frobots.**
>>> txt%22%2C%22lpu%22%3A%22http%**3A%2F%2Flocalhost%3A9000%**
>>> 2Frobots.txt%22%7D:1021<http://localhost:9000/repl?xpc=%7B%22cn%22%3A%22VwwA1h4vDD%22%2C%22tp%22%3Anull%2C%22osh%22%3Anull%2C%22ppu%22%3A%22http%3A%2F%2Flocalhost%3A3000%2Frobots.txt%22%2C%22lpu%22%3A%22http%3A%2F%2Flocalhost%3A9000%2Frobots.txt%22%7D:1021>
>>>  
>>>
>>> And that is where I am going to leave it, as someone will probably 
>>> take one look and know what is wrong, while I am flailing around in 
>>> the dark. 
>>>
>>  -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to