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

欢迎!请参阅关于页面以了解更多关于这个网页如何工作的小信息。

0
ClojureScript

正如标题所言。

最小复现示例:https://github.com/eerohele/cljs-repl-blow-stack

我正在尝试创建一个尽可能简单的ClojureScript REPL。我是不是做错了什么,或者是ClojureScript的bug呢?

1 答案

+2

被选中
 
最佳答案

错误告诉你异常发生在浏览器中。你看了浏览器的堆栈跟踪吗?

关于创建尽可能简单的REPL,快速入门有一个更好的方法 - 你提供的最小复现步骤过多,而且我看不出Socket REPL在这里有何作用,除了使堆栈跟踪更复杂。

你实际上不应该再做的事情

  1. 通过脚本构建并直接调用REPL API
  2. 使用:browser目标并手动尝试连接(这已经为你完成了)

请再次通过快速入门了解更简单、更标准的做事方式。

至少可以给出一个真正最简的复现,省略所有不必要的步骤。

更新:我刚刚尝试按照QuickStart步骤操作,并在REPL中输入了一个ns表单,与编译源相匹配,但我无法复现。

因此这里可能存在一个bug,但你需要进一步将其简化。

感谢你的回答!

>错误告诉你异常发生在浏览器中。你查看过浏览器堆栈跟踪了吗?

是的,我看了——浏览器控制台里什么都没有。

另外,我在这条问题发布之后尝试了几次,有时候会接到InternalError而不是RangeError。但对此并不是很清楚。

>至于创建最简单的REPL——Quick Start有更好的方法
> ...
>我看不出在这里使用Socket REPL有什么作用

抱歉,我在最初的帖子中应该更加准确。我正在尝试在套接字中运行一个最小的REPL,以便从我编辑器连接到它。我提供的复现没有这么做,但对我来说,我还需要重写cljs.repl/repl的:print和:caught hooks,以便以编辑器插件期望接收的方式打印评估结果和异常。我还需要获取编译器环境,以便编辑器自动完成等。

请纠正我,但如果我不能或不应该使用REPL API,我认为Quick Start方法并不提供执行这些操作的方式。虽然这个问题可能有些离题——我可以就这个话题再发一个问题。无论如何,我现在不确定如果无法或不应使用REPL API,我将如何实现ClojureScript编辑器集成。

无论如何,了解这种方法不被推荐是很好的。

>所以这里可能存在一个bug,但你确实需要进一步将其简化

明白了。问题显然与clojure.browser.repl有关,但我需要更多调查才能确定。
...