令人困惑的ClojureScript错误

5 clojure

(defn sprintf [& args]
  (with-out-str
    (apply printf args)
    *out*))
Run Code Online (Sandbox Code Playgroud)

错误

(Chrome)

Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined 
Run Code Online (Sandbox Code Playgroud)

题:

我究竟做错了什么?

Kri*_*ins 20

错误:

Uncaught TypeError: Cannot read property 'cljs$lang$maxFixedArity' of undefined
Run Code Online (Sandbox Code Playgroud)

...也许是历史上最令人困惑的错误信息,实际上意味着:

你正在调用apply一个不存在(或者不需要)的函数.

摇滚,未来的Google员工!

  • 对于那些在接受答复后很长时间回答完整解释的人,应该有更多的赞成票,因为您知道有人会从Google搜索到达此处.你可能只是为我节省了很多时间. (2认同)
  • @JohnAllen你需要找到它期望能够调用的函数.我这样做的两种方法是,检查堆栈跟踪(如果你启用了源映射,你应该能够找到调用者); 和一个干净的重建(通常会触发编译器警告). (2认同)

ama*_*loy 1

(def sprintf format)似乎更容易。

  • 今天我明白了亚历山大大帝会如何攻击 Clojure 代码。 (2认同)