2024年Clojure状态调查!中分享你的想法。

欢迎!请参见关于页面了解有关此如何工作的更多信息。

0
ClojureScript
编辑

正如标题所示,def看起来没有做任何事情就通过了。

例如,"(def x)"成功
但是"(def x 10)"失败,因为
"无法读取未定义的属性(读取'x'”)

有关信息,请参阅本文https://script.clojure.org/guides/self-hosting

建议:simple优化应该工作

重现方法: https://github.com/sstraust/ClojureDefRepro(见说明)

也许你能创建一个带有脚本的repo来重现这个问题。这将节省那些要调查这个问题的人的时间。
hi!附上的GitHub仓库重现了错误。
你可以通过以下步骤看到错误:

- 打开顶层index.html文件
然后从JavaScript控制台调用 "example.core.call_eval_with_def()"。

https://github.com/sstraust/ClojureDefRepro

仓库中包含了我JavaScript控制台截图中包含错误结果的截图。

感谢!-- sammy

1 答案

+1

选中
 
最佳答案

我没有运行代码,但我的猜测是这个代码被编译后发出

cljs.user.x = 10;

由于 cljs.user 还未定义,因此在尝试运行时将失败。因为当你在 cljs.user 之上设置 x 时会失败。请首先创建 cljs.user,或在编译时提供已存在的 :ns 选项。

哇!这确实有效

添加 (ns cljs.user) 似乎已修复了问题。

有趣的是我早已尝试显式传递一个 :ns 选项,但并没有使其生效。但是可能是我的用户错误。
...