【问题标题】:ClojureScript Parameter Declaration ErrorClojureScript 参数声明错误
【发布时间】:2012-06-23 04:37:28
【问题描述】:

我正在愉快地使用 clojurescript 破解,突然出现了这个错误:

java.lang.IllegalArgumentException: 参数声明 clojure.core/let 应该是一个向量 core.clj:6567 clojure.core/assert-valid-fdecl core.clj:220 clojure.core/sigs

我尝试注释所有代码,重新启动服务器等.....我正在使用 cljsbuild 0.2.1 进行编译。如何调试此错误?

下面是完整的堆栈跟踪,它没有显示哪一行可能导致错误 -

Compiling "resources/public/cljs/client.js" failed:
java.lang.IllegalArgumentException: Parameter declaration clojure.core/let should be a vector
                core.clj:6567 clojure.core/assert-valid-fdecl
                 core.clj:220 clojure.core/sigs
                 core.clj:294 clojure.core/defn
              RestFn.java:146 clojure.lang.RestFn.applyTo
                 core.clj:605 clojure.core/apply
            compiler.clj:1394 cljs.compiler/macroexpand-1
            compiler.clj:1411 cljs.compiler/analyze-seq
            compiler.clj:1468 cljs.compiler/analyze
            compiler.clj:1416 cljs.compiler/analyze-seq
            compiler.clj:1468 cljs.compiler/analyze
            compiler.clj:1461 cljs.compiler/analyze
             compiler.clj:829 cljs.compiler/analyze-block
            compiler.clj:1036 cljs.compiler/eval1347[fn]
             MultiFn.java:177 clojure.lang.MultiFn.invoke
            compiler.clj:1414 cljs.compiler/analyze-seq
            compiler.clj:1468 cljs.compiler/analyze
            compiler.clj:1416 cljs.compiler/analyze-seq
            compiler.clj:1468 cljs.compiler/analyze
            compiler.clj:1461 cljs.compiler/analyze
            compiler.clj:1487 cljs.compiler/analyze-file
            compiler.clj:1153 cljs.compiler/analyze-deps
            compiler.clj:1187 cljs.compiler/eval1420[fn]
             MultiFn.java:177 clojure.lang.MultiFn.invoke
            compiler.clj:1414 cljs.compiler/analyze-seq
            compiler.clj:1468 cljs.compiler/analyze
            compiler.clj:1461 cljs.compiler/analyze
            compiler.clj:1529 cljs.compiler/compile-file*
            compiler.clj:1567 cljs.compiler/compile-file
            compiler.clj:1628 cljs.compiler/compile-root
              closure.clj:367 cljs.closure/compile-dir
              closure.clj:399 cljs.closure/eval2024[fn]
              closure.clj:266 cljs.closure/eval1952[fn]
              closure.clj:413 cljs.closure/eval2011[fn]
              closure.clj:266 cljs.closure/eval1952[fn]
              closure.clj:877 cljs.closure/build
              compiler.clj:49 cljsbuild.compiler/compile-cljs[fn]
              compiler.clj:48 cljsbuild.compiler/compile-cljs
             compiler.clj:116 cljsbuild.compiler/run-compiler
             NO_SOURCE_FILE:1 user/eval2452[fn]
              LazySeq.java:42 clojure.lang.LazySeq.sval
              LazySeq.java:60 clojure.lang.LazySeq.seq
                  RT.java:473 clojure.lang.RT.seq
                 core.clj:133 clojure.core/seq
                core.clj:2725 clojure.core/dorun
                core.clj:2741 clojure.core/doall
             NO_SOURCE_FILE:1 user/eval2452
           Compiler.java:6511 clojure.lang.Compiler.eval
           Compiler.java:6501 clojure.lang.Compiler.eval
           Compiler.java:6500 clojure.lang.Compiler.eval
           Compiler.java:6501 clojure.lang.Compiler.eval
           Compiler.java:6477 clojure.lang.Compiler.eval
                core.clj:2797 clojure.core/eval
                 main.clj:297 clojure.main/eval-opt
                 main.clj:316 clojure.main/initialize
                 main.clj:349 clojure.main/null-opt
                 main.clj:427 clojure.main/main
              RestFn.java:421 clojure.lang.RestFn.invoke
                 Var.java:419 clojure.lang.Var.invoke
                 AFn.java:163 clojure.lang.AFn.applyToHelper
                 Var.java:532 clojure.lang.Var.applyTo
                 main.java:37 clojure.main.main 

【问题讨论】:

  • 您应该显示代码。我不知道 clojurescript 只有 clojure,但从错误来看,您似乎输入了 (let ((foo "bar")) .. 之类的内容,它应该是 (let [foo "bar"] ..
  • 还有一个(defn foo (bar) .. ),而不是(defn foo [bar] .. )

标签: clojure clojurescript


【解决方案1】:

理想情况下,编译器应该为您的语法错误发出一个行号。某处你有一个格式错误的 let 表达式。

【讨论】:

  • 我已经在上面发布了完整的堆栈跟踪。
  • 在这里遇到一个非常相似的问题 - 我的堆栈 strace 的来源反映为 NO_SOURCE_FILE:1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
相关资源
最近更新 更多