与奥斯汀连接到浏览器

时间:2014-05-05 13:39:13

标签: read-eval-print-loop clojurescript ring

我按照以下说明进行了自己的项目:https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample。我认为第2步出轨了:

  

一旦你进入REPL(它将在示例应用程序的主要部分启动   namespace,cemerick.austin.bcrepl-sample),evaluate(run)。那只是   在8080港口开始码头;如果您打开浏览器到该服务器,   你会看到这个页面(样本重新用作唯一的内容)。

我一直在用$ lein ring server-headless开始我的服务器,而不是从REPL开始,我很确定是什么导致[:script (cemerick.austin.repls/browser-connected-repl-js)]无法生成正确的javascript。在浏览器中,源代码在REPL中正确生成时显示<script></script>

如果这确实是问题,我如何从REPL运行等效的$ lein ring server-headless

2 个答案:

答案 0 :(得分:0)

我前一段时间处理过类似情况。

在这里,我离开了我所遵循的步骤来获得这个奥斯汀剧本:

  1. 在项目repl中引入:(def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
  2. 将结果表达式Browser-REPL ready @ http://localhost:XXXXX/ZZZ/repl/start调整为js脚本:<script>;goog.require('clojure.browser.repl');clojure.browser.repl.connect.call(null, 'http://localhost:XXXX/ZZZ/repl');</script>。请注意,每次只更改“XXXX / ZZZ”
  3. 写入nrepl (cemerick.austin.repls/cljs-repl repl-env)
  4. 重新加载浏览器
  5. 祝你好运!

答案 1 :(得分:0)

我从未与$ lein ring server-headless合作,因为在我发现需要解决这个问题之前,我已经转为不变。

Immutant在启动时会创建一个repl,其端口可以在项目文件中指定。我在emacs中使用cider并使用M-x cider连接到它,并在提示时指定端口。从这里只需按照教程步骤操作即可。有一件事让我抓狂并花了几分钟时间弄明白,你的html中带有browser-connected-repl-js的脚本标记需要位于<body>的最后;似乎不适用<head>

具有类似问题的设置的关键要点是你需要重置一个原子,你的html代码中的javascript需要访问这个原子。对于$ lein ring server-headless的原始问题,您可能希望在repl中启动服务器并按照教程进行操作。