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

macOS Monterey 12.5安装Dirac遇clojure/data/json缺失错误求助

Dirac安装运行问题排查

环境与安装过程

我在搭载M1芯片、运行macOS Monterey 12.5的MacBook Air上,尝试安装Dirac(Chrome DevTools的ClojureScript分支),执行官方提供的安装命令:

curl -s https://raw.githubusercontent.com/binaryage/dirac/master/install > /tmp/dirac.install && sudo bash /tmp/dirac.install

安装完成后,/usr/local/bin目录下存在dirac二进制文件,但运行dirac命令时出现错误:

Pedros-MacBook-Air:bin pedro$ dirac
WARNING: update-vals already refers to: #'clojure.core/update-vals in namespace: clojure.tools.analyzer.utils, being replaced by: #'clojure.tools.analyzer.utils/update-vals
...(省略警告信息)
Execution error (FileNotFoundException) at dirac.nrepl.compilation.direct/eval15283$loading (direct.clj:1).
Could not locate clojure/data/json__init.class, clojure/data/json.clj or clojure/data/json.cljc on classpath.

我先在Home目录尝试运行,问题未解决;随后在已添加org.clojure/data.json依赖的项目目录(project.clj简化内容如下)运行,仍报错:

(defproject abcd    ; Should be copied from shadow-cljs.edn
  :description "xxxx"
  :url "xxxx"

  :dependencies [[org.clojure/clojure "1.9.0"]
                 [org.clojure/clojurescript "1.10.339"]
                 [org.clojure/tools.nrepl "RELEASE"]
                 [binaryage/devtools ~devtools-version]
                 [binaryage/dirac ~dirac-version]
                 [org.clojure/data.json "2.4.0"]
                 [figwheel ~figwheel-version]
                 ;; Selmer for templating of .json config files
                 [selmer "1.12.50"]]

... (省略无关内容) ...

  :profiles {:repl
             {:repl-options {:port             8230
                             :nrepl-middleware [dirac.nrepl/middleware]
                             :init             (do
                                                 (require 'dirac.agent)
                                                 (dirac.agent/boot!))


}}})

疑问

  1. Dirac是否必须在项目目录中运行?
  2. 为何已添加org.clojure/data.json依赖仍报错,该依赖与报错中的clojure/data/json.clj有何区别?

解答

问题1:Dirac是否必须在项目目录中运行?

不是必须,但全局直接运行dirac命令时,它会使用自身内置的依赖环境,而非本地项目的依赖配置。通常更推荐在项目目录内结合Leiningen或Clojure CLI启动Dirac,这样它能复用项目的依赖,避免依赖缺失问题。如果要全局运行,需要确保Dirac的全局安装包包含所有必要依赖,但官方一键安装可能在M1芯片环境下存在依赖打包不全的情况。

问题2:org.clojure/data.json依赖与报错中clojure/data/json.clj的关系及报错原因

  • 两者的关系:org.clojure/data.json就是提供clojure/data/json.clj的官方依赖包,报错里的路径正是这个依赖包中的核心文件。
  • 报错原因:
    1. 全局安装的Dirac未包含该依赖:通过一键脚本安装的全局dirac二进制文件,其内置的classpath里缺少org.clojure/data.json,所以运行时找不到对应文件。
    2. 项目目录运行时未加载项目依赖:在项目目录运行全局dirac命令时,它并不会自动读取项目project.clj的依赖配置,依然使用自身全局环境。正确做法是通过Leiningen命令启动,比如lein dirac repl,这样才会将项目依赖加载到classpath中。

内容的提问来源于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.23 14:03:23