连接到ClojureScript bREPL:clojure.browser.repl/connect会在编译的JavaScript中抛出TypeError
我正在尝试连接到ClojureScript浏览器REPL,但在连接到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
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