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

如何延长浏览器与shadow-cljs nREPL的连接时长并恢复REPL变量?

解决方案

1. 延长浏览器连接的闲置超时时间

你可以通过修改shadow-cljs.edn配置调整WebSocket连接的闲置超时时间:

  • 在配置文件的:devtools节点下添加:ws-idle-timeout参数,单位为秒。默认值是300(5分钟),可根据需求设置更大的值,比如1小时(3600秒):
{:devtools {:ws-idle-timeout 3600
            ;; 其他devtools配置项
            }
 ;; 其他shadow-cljs配置项
}

修改后重启shadow-cljs服务,新的超时设置即可生效。如果你的环境使用了反向代理(如Nginx),还需要检查代理层是否有独立的超时配置,避免代理提前断开连接。

2. 无需逐个求值恢复REPL变量定义

推荐两种高效方案:

方案一:集中管理REPL临时定义

把常用的REPL变量定义、测试表达式放到专门的开发文件中,比如dev/repl_utils.cljs:

(ns dev.repl-utils
  (:require [re-frame.core :as rf]))

(def sel :some-selection)
(def accounts @(rf/subscribe [:the-accounts sel]))
;; 其他常用定义...

浏览器刷新后,只需在REPL中执行以下命令即可一次性加载所有定义:

(load-file "dev/repl_utils.cljs")
;; 或者
(require '[dev.repl-utils :as utils] :reload)

方案二:利用CIDER历史批量执行

CIDER会保留REPL会话的历史记录,你可以:

  1. 在Emacs中打开REPL历史缓冲区(快捷键C-c C-h)
  2. 选中所有需要重新执行的表达式
  3. 执行C-x C-e(或CIDER的cider-eval-region命令)批量求值

这种方式适合临时的、未整理到文件中的定义,无需提前准备文件。

内容的提问来源于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 10:45:48