使用 QuickStart 设置 Node REPL。
使用以下命令手动将 {{foo/bar.cljs}} 添加到文件系统中:
`
(ns foo.bar)
(defn throw-ex [] (ffirst 1))
(defn call-me [] (throw-ex))
`
检查是否正常工作
`
cljs.user=> (require 'foo.bar)
nil
cljs.user=> (foo.bar/call-me)
repl:13
throw e4210auto__;
^
错误:1 不是一个 ISeqable
at Object.cljs$core$seq [as seq] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:956:20)
at Object.cljs$core$first [as first] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:965:16)
at cljs$core$ffirst (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:1398:11)
at foo$bar$throw_ex (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljs:3:20)
at foo$bar$call_me (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljs:5:19)
at repl:1:105
at repl:9:3
at repl:14:4
at Object.exports.runInThisContext (vm.js:74:17)
at Domain.<anonymous> ([stdin]:41:34)
`
然后将 {{bar.cljs}} 手动移动到 {{bar.cljc}} 并添加一个新的符号,使其看起来像这样:
`
(ns foo.bar)
(defn throw-ex [] (ffirst 1))
(defn call-me [] (throw-ex))
(defn call-again [] (call-me))
`
然后重新加载命名空间并使用新的符号
`
cljs.user=> (require 'foo.bar :reload)
nil
cljs.user=> (foo.bar/call-again)
repl:13
throw e4210auto__;
^
错误:1 不是一个 ISeqable
at Object.cljs$core$seq [as seq] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:956:20)
at Object.cljs$core$first [as first] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:965:16)
at cljs$core$ffirst (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:1398:11)
at foo$bar$throw_ex (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljs:3:20)
at foo$bar$call_me (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljs:5:19)
at foo$bar$call_again (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljs:5:19)
at repl:1:108
at repl:9:3
at repl:14:4
at Object.exports.runInThisContext (vm.js:74:17)
`
这说明了缺陷。{{call_again}}和其他符号显示为位于旧文件名中。
停止 REPL 并重新启动它以查看正确的行为
`
cljs.user=> :cljs/quit
orion:hello_world-node mfikes$ rlwrap java -cp cljs.jar:src clojure.main node_repl.clj
正在读取 jar:file:/Users/mfikes/Desktop/hello_world-node/cljs.jar!/cljs/core.cljs 中的分析缓存
编译 src/foo/bar.cljc
ClojureScript Node.js REPL 服务器正在监听 49397
编译日志在:out/watch.log 可用
要退出,请输入::cljs/quit
cljs.user=> (require 'foo.bar)
nil
cljs.user=> (foo.bar/call-again)
repl:13
throw e4210auto__;
^
错误:1 不是一个 ISeqable
at Object.cljs$core$seq [as seq] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:956:20)
at Object.cljs$core$first [as first] (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:965:16)
at cljs$core$ffirst (/Users/mfikes/Desktop/hello_world-node/out/cljs/core.cljs:1398:11)
at foo$bar$throw_ex (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljc:3:20)
at foo$bar$call_me (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljc:5:19)
at foo$bar$call_again (/Users/mfikes/Desktop/hello_world-node/out/foo/bar.cljc:7:22)
at repl:1:108
at repl:9:3
at repl:14:4
at Object.exports.runInThisContext (vm.js:74:17)
`