Search code examples
javascriptclojureclojurescriptread-eval-print-loopshadow-cljs

Why is CIDER's REPL's behavior inconsistent? How to understand shadow-cljs' error message "No available JS runtime"?


I am using Clojure, ClojureScript, shadow-cljs, Emacs, Cider, and Lein to develop a web app project.

The web application has been successfully built. I can access the interface on http://localhost:3005/.

Yesterday, everything was working fine. After invoking:

cljs.user> app.components.income-balance-reports/all-account-ks

I would receive a vector returned:

enter image description here

Now, everything stayed the same. But, when I try to execute the same variable after build was complete, I get an error message:


cljs.user> app.components.income-balance-reports/all-account-ks
No available JS runtime.
See https://shadow-cljs.github.io/docs/UsersGuide.html#repl-troubleshootingnil

The error message is also retrieved for normal operations unrelated to my code base, such as:

cljs.user> (+ 1 2 3)
No available JS runtime.

I tried reading the link mentioned on the error message: https://shadow-cljs.github.io/docs/UsersGuide.html#repl-troubleshooting

But, I did not manage to solve the problem. Initially, I reloaded the page. It did not work out.

Also, I thought the problem could be my behavior switching browsers and killing the default tab opened by the REPL. So, I tried re-starting the REPL, replying "no" for the automatic start of localhost:3005, manually inserted it on the browser's address bar and I only used the link only in one browser. It did not make any difference.

How to fix this? Why is this happening? Any suggestion on how to debug it?


Solution

  • Things are working now. I believe the problem was the wrong instance name on TFR_DEVand TFR_RELEASE. This generated a partially successful build. I could see the interface, but it was not fully working.