3

我一直在修补 clojure 和 clojurescript 一段时间,我总是发现浏览器 repl 非常没有响应。它通常会挂起而不给出结果,或者抛出一个损坏的管道异常。现在我处于它总是拒绝工作的情况。

假设我下载了 modern-cljs 教程第 2 部分,并执行了所有步骤来启动页面、加载已编译的 javascript 并启动 bRepl。当我尝试评估像 (+ 3 4) 这样简单的东西时,它就是行不通的。

我在 OSX 10.8.4 上,我的 leiningen 版本是 Java 1.6.0_51 Java HotSpot(TM) 64 位服务器 VM 上的 2.3.2。非常感谢任何帮助。

4

5 回答 5

3

我建议克隆modern-cljs repo,然后检查tutorial-02 分支,然后清理并重新编译。

git clone https://github.com/magomimmo/modern-cljs.git
cd modern-cljs
git checkout tutorial-02
lein do clean, cljsbuild clean
lein cljsbuild once

确保你的 http-server 正在运行(我假设端口是 3000)并且它的根设置为 modern-cljs/resources/public 目录然后运行 ​​repl-listen 子任务,如下所示:

lein trampoline cljsbuild repl-listen

等待 cljs 提示。然后访问localhost:3000/simple.htmlURL 并等待与 brepl 的连接准备就绪。

在 cljs 提示符下,您现在应该能够计算 cljs 表达式。最后,重新加载上面的 URL。

如果它仍然不起作用,请尝试删除您的 maven 存储库:

rm -rf ~/.m2/repository

并重lein do做命令链中的所有内容。

最终您可以按照https://github.com/magomimmo/modern-cljs/blob/master/doc/tutorial-18.md#the-need-of-a-more-comfortable-brepl-experience教程进行设置使用https://github.com/cemerick/piggieback的更舒适的 bREPL

HIH

于 2013-10-10T15:58:02.157 回答
2

我在这个话题上也遇到了一些问题。以下是对我有帮助的技巧:

  1. 清洁精益部门:rm -rf ~/.m2/*
  2. 下载 lein deps:lein deps在你的项目根目录中
  3. 我看到了这条消息:"broken pipe"当最后一次 brepl 交互时间过多时。所以,刷新浏览器就可以了
  4. 有时我的 brepl 在我第一次尝试评估代码时挂起,再次尝试刷新浏览器
  5. 不要忘记运行:lein cljsbuild once在启动 brepl 之前

祝你好运

PS:无论如何,如果您想获得舒适的 brepl 体验,您必须查看 https://github.com/cemerick/austin。我已经测试了这个 brepl 并且工作正常https://github.com/juanantonioruz/client

于 2013-10-18T09:41:15.607 回答
1

您应该尝试不安全地使用 Chromium:

  • 操作系统:

    open -a Chromium --args --disable-web-security

  • Linux:

    chromium --disable-web-security

然后在不安全的浏览器中访问您的页面并尝试连接到 brepl。


解释:

因为brepl在端口 9000 上运行时,托管页面的 Web 服务器必然使用不同的端口,这构成了XSS(参见 [this stack overflow discussion])。

解决此问题的最简单方法是不安全地使用 Chromium 进行调试,但如果需要,您可以通过其他方式启用 XSS。

于 2014-06-02T02:01:32.953 回答
0

您在 project.clj 中指定了哪个 ClojureScript 版本?如果您没有指定特定版本,这可能是您的麻烦的根源。0.0-1913 是最新的。

于 2013-10-06T01:42:55.050 回答
0

当我忘记repl/connect从浏览器中调用时,我还看到 REPL 完全挂起。由于没有输出,因此很难诊断。在您尝试更具侵入性的补救措施之前,值得验证。

于 2014-01-02T14:26:23.137 回答