Javascript ClojureScript-浏览器和rhino repl之间的控制台和打印

Javascript ClojureScript-浏览器和rhino repl之间的控制台和打印,javascript,clojurescript,read-eval-print-loop,rhino,Javascript,Clojurescript,Read Eval Print Loop,Rhino,免责声明:ClojureScript非常新 这个问题的上下文是这个文件(我自己添加了一些内容的“启动并运行”一书中的一个示例)。具体来说,问题是关于最后两行的,您可以忽略其余部分 (ns hello-compiler.hello) (defn ^:export main [] (.write js/document "<h1>Hello, ClojureScript compiler!</h1>")) (defn asum [a b] (+ a b)) (e

免责声明:ClojureScript非常新

这个问题的上下文是这个文件(我自己添加了一些内容的“启动并运行”一书中的一个示例)。具体来说,问题是关于最后两行的,您可以忽略其余部分

(ns hello-compiler.hello)

(defn ^:export main []
  (.write js/document "<h1>Hello, ClojureScript compiler!</h1>"))

(defn asum [a b]
  (+ a b))

(enable-console-print!)

(println "hello.cljs loaded successfully")
,所以我需要它来运行最后一行(println)。前面的所有表达式都得到了很好的计算,并产生了预期的输出,即我在浏览器屏幕上看到了问候语,并且我能够运行hello\u compiler.hello.asum(2,3)。在第二行(倒数第二行)中,我还在浏览器控制台中获得了“文件加载成功”

但当我像这样运行服务器端REPL时:

rlwrap lein蹦床cljsbuild repl rhino

并按如下方式加载文件:

(加载文件“src/cljs/hello\u compiler/hello.cljs”)

,我在(println…)中未看到该消息。事实上,如果我尝试手动从REPL(println..)读取,我会得到一个异常:

org.mozilla.javascript.EcmaError: ReferenceError: "console" is not defined.
(它不会显示在加载文件中,可能会转到其他位置)

当然,在运行(加载文件…)之前,我可以在REPL中手动(println…)启用控制台打印在浏览器中似乎有帮助,但在REPL中禁用打印。同样,如果没有启用控制台打印,(println…)在REPL中工作良好,无论是手动还是加载文件。它读取的是纯CLJS,可能没有编译成JS

所以问题是-有没有一种方法可以让它同时工作?我可以在哪里将.cljs文件加载到本地REPL中,并具有与我在浏览器中看到的相同的行为,浏览器将编译后的文件加载到JS版本?我知道Rhino REPL不像浏览器那样有“控制台”,但是。。。当我运行“node”时,它不知怎么搞清楚了我所说的console.log=)如果不是,有人能指出为什么我期望这样的行为是不合理的吗?
谢谢

好吧,我想我找到了我自己问题的答案。我想得越多,我就越怀疑期望Rhino“必须”有一个控制台对象是不合理的,而启用控制台打印就可以了!代码。因此,我尝试了另一个repl,并将[org.bodil/lein-noderepl“0.1.11”]添加到我的:plugins。然后,有了这个REPL,我就可以在浏览器和REPL中同时使用相同的代码工作了

org.mozilla.javascript.EcmaError: ReferenceError: "console" is not defined.