请在 2024年Clojure状态调查! 分享您的想法。

欢迎!请参阅 关于 页面以了解更多此工作方式的信息。

0
ClojureScript

正如其名。

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

我正尝试创建一个最简单的ClojureScript REPL。我是不是做错了什么,或者这是一个ClojureScript的bug?

1 个答案

+2

被选中
 
最佳答案

错误告诉您异常发生在浏览器中。您是否已经查看浏览器堆栈跟踪?

至于创建最简单的REPL,Quick Start提供了一个更好的方法——您的最小复现示例执行了许多不再推荐执行的步骤,我无法看到Socket REPL在这里除了制造更复杂的堆栈跟踪之外还起到了什么作用。

您实际上不应再做的事情

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

再次请通过Quick Start了解更简单和标准的方式。

至少,它将提供一个真实的最小复现示例,并省略所有这些不必要的步骤。

更新:我刚刚按照快速上手步骤操作,并在REPL中输入了一个与编译后源代码匹配的ns表单,但我无法重现。

所以这里可能存在一个bug,但你确实需要进一步缩小范围。


编辑
谢谢回答!

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

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

此外,我在这个问题发布后尝试了这一次,有时会收到InternalError而不是RangeError。不过,我并不确定这到底是为什么。

>至于创建最简单的REPL - 快速上手的指导有一个更好的方法
> ...
>我看不到Socket REPL在这里有什么作用

抱歉,我最初的帖子应该更加精确。我正在尝试在一个套接字上运行一个最小的REPL,以便我可以从我的编辑器连接到它。我提供的重生产方法没有做到这一点,但在我的实际使用情况下,我还需要覆盖cljs.repl/repl的:print和:caught钩子,以便将求值结果和异常以编辑器插件期望接收的方式来打印。我还需要获取编译器环境以用于编辑器自动完成等。

请纠正我如果我说错了,但我认为快速上手的指导方法没有提供做这些的方法。这可能与这个问题有些脱题 -- 我可以就这个话题再发一个问题。毕竟,我现在不是特别确定如果我不能或不应该使用REPL API,该如何实现ClojureScript编辑器集成。

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

>所以这里可能存在一个bug,但你肯定需要进一步缩小范围

我明白了。这个问题显然与clojure.browser.repl有关,但我会需要进一步调查才能确定。
...