必须打开源映射才能使println正常工作?

时间:2014-06-07 09:02:16

标签: clojure clojurescript

这真的很奇怪。我在我的project.clj中有这个:

  :cljsbuild
  {:builds
   [{:id "async-tues-id"
     :source-paths ["src/async_tues/cljs"]
     :compiler {:optimizations :none
                :pretty-print false
                :output-dir "resources/compiler/"
                :output-to "resources/main.js"}}]}

请注意,此处未启用source-map。

然后我在我的cljs文件中有这个:

(ns tues.page)
(enable-console-print!)

(println "hello from cljs!")

(println "hi from page.js")

lein cljsbuild之后,浏览器将行打印到控制台。我会添加更多println语句并执行它们......但是没有文本。

然后我将其添加到project.clj:

            :source-map true

在新编辑之后,printlns会根据需要显示实际文本!现在为什么source-map与println ??

的实际功能有关

1 个答案:

答案 0 :(得分:0)

如果您使用诸如“ lein newagent my-project”之类的东西来创建项目,则会在prod / cljs / my-project / prod.cljs中看到类似的内容。

(ns reagent.prod
  (:require [reagent.core :as core]))

;;ignore println statements in prod
(set! *print-fn* (fn [& _]))

(core/init!)

要指定否:优化,我相信正确的值是:空白,而不是:无。 :simple和:advanced也有效(在生产中始终使用:advanced)。

这有点牵强,但也许打开:source-maps会导致:optimizations默认为一个更合乎逻辑的非生产值(因为:none无效),这在某种程度上导致了* print-fn *的覆盖。不会发生。