To connect to a Scittle nREPL server from your editor, follow these steps. The setup described here, can be found in this directory.
In babashka or Clojure JVM, use the sci.nrepl dependency and run:
(require '[sci.nrepl.browser-server :as nrepl])
(nrepl/start! {:nrepl-port 1339 :websocket-port 1340})
This will run an nREPL server on port 1339 and a websocket server on port 1340. Your editor's nREPL client will connect to port 1339 and your browser, running scittle, will connect to port 1340. The nREPL server forwards messages to the browser via the websocket connection.
In your scittle website, you will need to include the following, in addition to the normal routine:
<script>var SCITTLE_NREPL_WEBSOCKET_PORT = 1340;</script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/scittle.nrepl.js" type="application/javascript"></script>
Also include the CLJS file that you want to evaluate with nREPL:
<script src="playground.cljs" type="application/x-scittle"></script>
Then visit playground.cljs
in your editor and connect to the nREPL server,
and start evaluating!
See the index.html
file for an example.
When you run bb dev
in this directory, and then open http://localhost:1341
you should be able evaluate expressions in playground.cljs
. See a demo
here.
Note that the nREPL server connection stays alive even after the browser window refreshes.
Currently when connecting from CIDER, you need to use this snippet:
(cider-register-cljs-repl-type 'sci-js "(+ 1 2 3)")
(defun mm/cider-connected-hook ()
(when (eq 'sci-js cider-cljs-repl-type)
(setq-local cider-show-error-buffer nil)
(cider-set-repl-type 'cljs)))
(add-hook 'cider-connected-hook #'mm/cider-connected-hook)
Then choose cider-connect-cljs
, select port 1339
, followed by the sci-js
REPL type.