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

欢迎!请参阅 关于 页面了解更多关于如何使用本站的信息。

0 投票
ClojureScript
编辑

如标题所示,def 似乎未经操作就通过了。

即 "(def x)" 成功
但 "(def x 10)" 失败,因为
"无法读取 undefined 的属性(读取 'x')"

请参阅此篇文章: https://script.clojure.org/guides/self-hosting

建议:simple 压缩优化应该可以工作

要复现: https://github.com/sstraust/ClojureDefRepro (请查看评论中的说明)

如果您能创建一个包含您可以运行的脚本来复现此问题的仓库,可能会很有帮助。这将为要调查此问题的人节省时间。
嗨!附上了重现错误的 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选项,但无法使其工作。这可能是我自己的用户错误。
...