You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CIDER REPL行为异常?如何解决shadow-cljs"No available JS runtime"错误?

问题原因分析

出现"No available JS runtime"错误,本质是ClojureScript REPL无法找到并连接到浏览器端的JS执行环境,常见原因包括:

  • shadow-cljs的devtools与浏览器runtime的连接异常断开,且自动重连机制失效
  • 浏览器插件(广告拦截、隐私工具)拦截了shadow-cljs注入的dev脚本,导致runtime无法注册
  • shadow-cljs配置文件(shadow-cljs.edn)被误修改,导致devtools无法正确暴露runtime
  • CIDER与shadow-cljs的REPL桥接会话损坏,无法传递代码到浏览器runtime
修复方法
  • 重置shadow-cljs连接:
    在终端执行:
    shadow-cljs disconnect
    shadow-cljs watch app
    
    或者在CIDER REPL中执行:
    (shadow.cljs.devtools.api/disconnect)
    (shadow.cljs.devtools.api/watch :app)
    
    等待构建完成后重新打开页面。
  • 排除浏览器拦截:
    关闭广告拦截、隐私类插件,或使用浏览器无痕模式访问http://localhost:3005/,确认shadow-cljs的dev脚本能正常加载。
  • 验证shadow-cljs配置:
    检查shadow-cljs.edn中:devtools节点的配置,确保:http-port为3005,:watch-dir指向正确的源码目录,没有误改导致runtime无法被检测到。
  • 重建CIDER连接:
    在Emacs中关闭当前CIDER缓冲区,重新执行cider-jack-in-cljs,选择对应的shadow-cljs构建目标(如:app),等待REPL初始化完成后再打开页面。
  • 清除浏览器缓存:
    清除localhost:3005站点的本地存储和缓存,避免旧的shadow-cljs脚本残留导致连接异常。
调试建议
  • 查看shadow-cljs日志:
    在终端执行shadow-cljs log app,观察是否有runtime注册失败、连接超时等错误信息,定位问题环节。
  • 检查浏览器控制台:
    打开页面后查看浏览器开发者工具的控制台,确认是否有shadow-cljs相关的报错(如shadow$bridge未定义、脚本加载失败)。
  • 测试独立shadow-cljs REPL:
    跳过CIDER,直接在终端执行shadow-cljs cljs-repl app,输入(+ 1 2 3)测试。如果能正常执行,说明问题出在CIDER与shadow-cljs的集成上;否则问题在shadow-cljs或浏览器环境。
  • 检查依赖兼容性:
    确认project.clj中shadow-cljs、CIDER相关依赖版本匹配,避免因版本冲突导致REPL桥接失败。

内容的提问来源于stack exchange,提问作者Pedro Delfino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:27:22