连接到ClojureScript bREPL:clojure.browser.repl/connect会在编译的JavaScript中抛出TypeError

连接到ClojureScript bREPL:clojure.browser.repl/connect会在编译的JavaScript中抛出TypeError,clojure,google-closure-compiler,leiningen,google-closure,clojurescript,Clojure,Google Closure Compiler,Leiningen,Google Closure,Clojurescript,我正在尝试连接到ClojureScript浏览器REPL,但在clojure.browser.REPL/connect方面遇到问题。我编译的JavaScript抛出一个TypeError试图调用顶部Google闭包代码块中null对象的appendChild。我正在按照(第9章,第78页,预览版中提供)中的说明进行操作,并想知道自发布以来,用于此操作的工具是否发生了更改 我正在使用Leiningen 2.0.0、Java 1.6.0、OS X 10.7.5以及我的项目中的依赖项。clj: (de

我正在尝试连接到ClojureScript浏览器REPL,但在
clojure.browser.REPL/connect
方面遇到问题。我编译的JavaScript抛出一个
TypeError
试图调用顶部Google闭包代码块中
null
对象的
appendChild
。我正在按照(第9章,第78页,预览版中提供)中的说明进行操作,并想知道自发布以来,用于此操作的工具是否发生了更改

我正在使用Leiningen 2.0.0、Java 1.6.0、OS X 10.7.5以及我的
项目中的依赖项。clj

(defproject brepl-hello "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.clojure/clojurescript "0.0-1552"]
                 [compojure "1.1.5"]
                 [ring/ring-jetty-adapter "1.1.8"]]
  :plugins [[lein-cljsbuild "0.3.0"]]
  :source-paths ["src/clj"]
  :cljsbuild {:builds [{
                :source-paths ["src/cljs"]
                :compiler {
                 :output-to "resources/public/brepl-hello.js"
                 :optimizations :whitespace 
                 :pretty-print true}}]})
这是唯一的ClojureScript源文件,
src/cljs/brepl\u hello/brepl hello.cljs

(ns brepl-hello
  (:require [clojure.browser.repl :as repl]))

(repl/connect "http://localhost:9000/repl")
这将编译到文件
resources/public/brepl hello.js
,我已将其插入同一目录中的
index.html

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <script type="text/javascript" src="brepl-hello.js"></script>
    </head>
    <body>
    </body>
</html>
这似乎是
clojure.browser.repl/connect
的问题。将ClojureScript源代码中的这一行替换为以下内容:

(ns brepl-hello
  (:require [clojure.browser.repl :as repl]))

(.write js/document "Hello World!")
将在浏览器中编译和运行。我怀疑我的构建设置或目录结构中存在错误配置,或者我在这一切中的某个地方犯了一个noob错误。自从我遵循的说明发布以来,发生了什么变化?我在#clojure irc日志中发现了一些关于这个问题的引用,但没有找到解决方案

最后,这里有一个简短的目录树供参考:

├── out
│   ├── cljs
│   │   ├── core.cljs
│   │   └── core.js
│   ├── clojure
│   │   └── browser
│   │       ├── event.cljs
│   │       ├── event.js
│   │       ├── net.cljs
│   │       ├── net.js
│   │       ├── repl.cljs
│   │       └── repl.js
│   └── goog
│       └── [...] 
├── pom.xml
├── project.clj
├── resources
│   └── public
│       ├── brepl-hello.js
│       └── index.html
├── src
│   ├── clj
│   │   └── brepl_hello
│   │       └── core.clj
│   └── cljs
│       └── brepl_hello
│           └── brepl-hello.cljs
└─── target
     ├── brepl-hello-0.1.0-SNAPSHOT.jar
     ├── classes
     ├── cljsbuild-compiler-0
     │   ├── brepl_hello
     │   │   └── brepl-hello.js
     │   ├── cljs
     │   │   ├── core.cljs
     │   │   └── core.js
     │   └── clojure
     │       └── browser
     │           ├── event.cljs
     │           ├── event.js
     │           ├── net.cljs
     │           ├── net.js
     │           ├── repl.cljs
     │           └── repl.js
     └── stale
         └── extract-native.dependencies

嗯,它是开源的,从代码上看,
document.body
在添加repl-hidden-iframe时是空的(连接到这一点的调用)

您应该在dom ready或body on load上执行此操作。

查看:

或者,为了获得更好的brepl体验,请点击此处


你说得对!这是一个普通的未初始化元素。哦,很好的资源,谢谢你把它们放在一起
├── out
│   ├── cljs
│   │   ├── core.cljs
│   │   └── core.js
│   ├── clojure
│   │   └── browser
│   │       ├── event.cljs
│   │       ├── event.js
│   │       ├── net.cljs
│   │       ├── net.js
│   │       ├── repl.cljs
│   │       └── repl.js
│   └── goog
│       └── [...] 
├── pom.xml
├── project.clj
├── resources
│   └── public
│       ├── brepl-hello.js
│       └── index.html
├── src
│   ├── clj
│   │   └── brepl_hello
│   │       └── core.clj
│   └── cljs
│       └── brepl_hello
│           └── brepl-hello.cljs
└─── target
     ├── brepl-hello-0.1.0-SNAPSHOT.jar
     ├── classes
     ├── cljsbuild-compiler-0
     │   ├── brepl_hello
     │   │   └── brepl-hello.js
     │   ├── cljs
     │   │   ├── core.cljs
     │   │   └── core.js
     │   └── clojure
     │       └── browser
     │           ├── event.cljs
     │           ├── event.js
     │           ├── net.cljs
     │           ├── net.js
     │           ├── repl.cljs
     │           └── repl.js
     └── stale
         └── extract-native.dependencies