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

如何通过Calva Jack-in启动ClojureScript项目的前后端?

解决Calva Jack-in启动前后端的正确流程

1. 确认shadow-cljs构建配置

确保你的shadow-cljs.edn中backend构建配置正确,需包含Node脚本目标和REPL支持,示例:

{:deps true
 :builds
 {:frontend
  {:target :browser
   :modules {:main {:init-fn mern.frontend.core/init}}}
  :backend
  {:target :node-script
   :output-to "target/main.js"
   :main mern.backend.core/main
   :devtools {:repl-true}}}}

2. 启动Calva Jack-in时选择正确构建目标

  • 打开项目后,执行Calva的Jack-in命令(默认快捷键Ctrl+Alt+C J)。
  • 在shadow-cljs构建选择步骤中,勾选backend(需同时启动前端可一并勾选frontend)。
  • 等待REPL启动完成,终端会显示已连接到shadow-cljs的backend REPL。

3. 在REPL中切换到backend命名空间并启动服务

  • 在REPL输入框执行命令切换命名空间:
    (in-ns 'mern.backend.core)
    
    也可使用Calva的Switch to Namespace命令(Ctrl+Alt+C N)选择mern.backend.core。
  • 验证当前REPL环境:执行(js/process.version),应返回Node.js版本号(如v18.17.0),确认是Node环境而非浏览器环境。
  • 执行启动函数:
    (start!)
    
    此时终端会输出Starting server和Example app listening on port 3000!,访问localhost:3000即可看到预期的"Hello, world"。

4. 启动前端(若需)

  • 若启动Jack-in时勾选了frontend构建,Calva会自动启动shadow-cljs的watch模式,前端代码将自动编译刷新。
  • 前端初始化函数(如mern.frontend.core/init)可在frontend的REPL中执行,或根据构建配置让shadow-cljs自动调用。

常见问题排查

  • 执行start!无输出:检查是否处于正确的backend REPL环境,前端REPL无法加载express模块,会直接报错(若无报错则大概率未切换到backend)。
  • 端口被占用:修改代码中port变量为其他值(如3001),重新执行(start!)。
  • stop!报错:检查@server是否为nil,确保start!已成功执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:05:26