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

在 repo 中包含了我 JavaScript 控制台中的错误截图。

谢谢!-- sammy

1 个答案

+1

被选中
 
最佳答案

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

cljs.user.x = 10;

在没有定义 cljs.user 的情况下。因此,当你尝试运行它时,它会尝试在 cljs.user 上设置 x,所以会失败。尝试首先创建 cljs.user,或者在编译时提供一个已存在的 :ns 选项。

哇!这真的有用

添加 (ns cljs.user) 似乎解决了这个问题。

有趣的是,我已经尝试显式传递一个 :ns 选项,但无法使其工作。这可能是我的用户错误。
...