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 "some error"))
(set! *main-cli-fn* -main)
当我使用优化 `none` 编译并运行时,日志会显示
$ clj -m cljs.main -v -O none -t node -c foo
$ node out/main.js
[ 0.002s] [app] some error
当我使用 `simple`(或 `advanced`)优化编译并运行时,日志不会显示。
期望:优化 simple 应该对 Node 上的日志显示没有影响(就像编译浏览器一样)。
h2. 各种信息(仅供参考)
在 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)`