【问题标题】:Connect to browser with austin通过 austin 连接到浏览器
【发布时间】:2014-05-05 13:39:12
【问题描述】:
我为自己的项目遵循了以下说明:https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample。我认为事情在第 2 步出轨了:
进入 REPL 后(它将在示例应用程序的主
命名空间,cemerick.austin.bcrepl-sample),评估(运行)。那只是
在 8080 端口启动码头;如果您打开该服务器的浏览器,
您将看到此页面(示例将其重新用作其唯一内容)。
我一直使用$ lein ring server-headless 启动我的服务器,而不是从 REPL 启动,我很确定这就是导致[:script (cemerick.austin.repls/browser-connected-repl-js)] 无法生成正确 JavaScript 的原因。在浏览器中,源代码显示<script></script>,而它在 REPL 中正确生成。
如果这确实是问题所在,我将如何从 REPL 运行相当于 $ lein ring server-headless 的内容?
【问题讨论】:
标签:
read-eval-print-loop
clojurescript
ring
【解决方案1】:
我前段时间处理过类似的情况。
这里我留下了获取这个奥斯汀脚本的步骤:
- 项目repl中介绍:
(def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
- 将结果表达式
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”发生变化
- 写入 nrepl
(cemerick.austin.repls/cljs-repl repl-env)
- 重新加载浏览器
祝你好运!
【解决方案2】:
我从来没有使用过 $ lein ring server-headless,因为我在发现非常需要解决这个问题之前切换到了 immutant。
Immutant 在启动时会创建一个 repl,其端口可以在您的项目文件中指定。我在 emacs 中使用 cider 并使用 M-x cider 连接到它,并在出现提示时指定端口。从这里只需按照教程步骤操作。一件事引起了我的注意并花了几分钟才弄清楚,你的 html 中带有 browser-connected-repl-js 的脚本标签需要在你的 <body> 的最后;在<head> 中似乎不起作用。
对于具有类似问题的设置,关键在于您需要重置一个原子,并且您的 html 代码中的 javascript 需要访问该原子。对于 $ lein ring server-headless 的原始问题,您可能需要在 repl 中启动服务器并按照教程进行操作。