h2. 重复步骤
给定
{code:title=deps.edn}
{:paths
["."]
:deps
{org.clojure/clojurescript {:mvn/version "1.10.339"
#_#_:git/url "
https://github.com/clojure/clojurescript.git" #_#_:sha "6eedd0a08c49f7b0d4dcb30977b2fb38c90577bd"}}}
{code:title=foo.cljs}
(ns foo
(:require [goog.log :as glog])
(:import goog.debug.Console))
(def logger
(glog/getLogger "app"))
(def console (goog.debug.Console.))
(defn workaround! []
(.setConsole goog.debug.Console js/console))
(defn -main [& args]
(.setCapturing console true)
(.setLevel logger goog.debug.Logger.Level.FINEST)
(when args
(workaround!))
(glog/error logger "一些错误"))
(set! *main-cli-fn* -main)
当我不带优化`none`编译并运行时,记录会出现
$ clj -m cljs.main -v -O none -t node -c foo
$ node out/main.js
[ 0.002s] [app] 一些错误
当我使用`simple`(或`advanced`)优化编译并运行时,记录不会出现。
预期:在Node上,simple优化对记录出现不会有影响(就像编译浏览器一样)。
h2. 各种(FWIW)
使用simple时,`goog.debug.Console.console_`最终成了nil,因为`goog.global['console']`也是nil (
https://github.com/google/closure-library/blob/master/closure/goog/debug/console.js#L169).
`println`在none和simple中都能正常工作。
当针对浏览器时,none和simple都会显示记录。
一个解决方案是将Console设置为:`(.setConsole goog.debug.Console js/console)`