2

我是 ClojureScript 的新用户,我正在使用Re-frame编写应用程序。当我收到一条错误消息(来自 ClojureScript)时,在大多数情况下,我会从库中获得一个以 JavaScript 代码结尾的调用堆栈。这是意料之中的,但我没有从堆栈中自己的代码中获得函数!有时,我根本没有得到任何 ClojureScript 函数调用,只有 JavaScript 调用。有没有办法在这些错误消息中查看堆栈顶部?或者从堆栈中的代码/命名空间中查看最后一个函数?

这对我来说可能是一个巨大的帮助。即使是很小的错误(例如,在地图调用中交换操作员的位置)也很难跟踪。我应该做错了什么。

4

1 回答 1

3

据说 ClojureScript 错误消息是后天习得的。由于编译器的工作方式,错误消息可能很神秘。

安装cljs-devtools或 fork Dirac可以帮助使 ClojureScript 错误消息更具可读性。这包括:

  1. :hints功能。

    :hints功能试图增加未捕获的异常和错误对象,以包含与此类错误相关的一些额外知识。它尝试获取原始源文件,提取相关部分以显示更多上下文并在那里标记 javascript 错误。预计这仅适用于 :optimizations none 编译器模式,默认情况下它是禁用的,因为它依赖于猴子补丁。

  2. 更好地显示ClojureScript 函数名称

    更好的堆栈跟踪示例(来自 Dirac,但cljs-webtools已经改进了很多)

    堆栈跟踪

安装

  • 启用自定义格式化程序
  • 打开 DevToolsCMD-ALT-J
  • F1使用或按三个点进入设置
  • 选中控制台下的“启用自定义格式化程序”

cljs-webtools

(见安装):

  • 在编译器中添加配置project.clj

    {:builds
       [{:id           "dev"
         :source-paths ["src/cljs"]
         :figwheel     {:on-jsload "blabla.core/reload"}
         :compiler     {(...)
                        :preloads        [devtools.preload]
                        :external-config {:devtools/config {:features-to-install :all}}}}
    

狄拉克

  • 安装Dirac Chrome 扩展程序
  • 在启用远程调试的情况下运行 Chrome。

    /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary \
      --remote-debugging-port=9222 \
      --no-first-run \
      --user-data-dir=$A_PATH_TO_YOUR_USER_PROFILE_DIRECTORY
    
  • 添加binaryage/dirac到您的依赖项project.clj

    :dependencies [[binaryage/dirac "RELEASE"]]
    

    (或使用另一个安装说明)。

如果您使用re-frameLeiningen 模板cljs-devtools则默认包含

于 2017-10-02T17:18:44.753 回答