我按照以下说明进行了自己的项目: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
?
答案 0 :(得分:0)
我前一段时间处理过类似情况。
在这里,我离开了我所遵循的步骤来获得这个奥斯汀剧本:
(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”(cemerick.austin.repls/cljs-repl repl-env)
答案 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中启动服务器并按照教程进行操作。