Skip to content

Clerk :ssr build fails with :package :directory #757

@formsandlines

Description

@formsandlines

I tried to build Clerk notebooks with :ssr true. It works fine when I also set :package :single-file, but without this option (or :package :directory) I always get this error:

clerk-ssr-test % clojure -X:clerk
👷🏼 Clerk is building 1 notebooks…
🧐 Parsing… Done in 16,737ms. ✅
🔬 Analyzing… Done in 72,402ms. ✅
🔨 Building "notebooks/foo.clj"… Done in 13,158ms. ✅
🧱 Server Side Rendering… Exception in thread "main" java.lang.IllegalArgumentException: Multiple methods in multimethod 'simple-dispatch' match dispatch value: class babashka.process.Process -> interface clojure.lang.IPersistentMap and interface clojure.lang.IDeref, and neither is preferred
        at clojure.lang.MultiFn.findAndCacheBestMethod(MultiFn.java:179)
        at clojure.lang.MultiFn.getMethod(MultiFn.java:150)
        at clojure.lang.MultiFn.getFn(MultiFn.java:154)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.pprint$write_out.invokeStatic(pprint_base.clj:194)
        at clojure.pprint$pprint_map$fn__11193$fn__11195.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map$fn__11193.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map.invokeStatic(dispatch.clj:112)
        at clojure.pprint$pprint_map.invoke(dispatch.clj:106)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.pprint$write_out.invokeStatic(pprint_base.clj:194)
        at clojure.pprint$pprint_vector$fn__11178.invoke(dispatch.clj:95)
        at clojure.pprint$pprint_vector.invokeStatic(dispatch.clj:94)
        at clojure.pprint$pprint_vector.invoke(dispatch.clj:92)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.pprint$write_out.invokeStatic(pprint_base.clj:194)
        at clojure.pprint$pprint_map$fn__11193$fn__11195.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map$fn__11193.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map.invokeStatic(dispatch.clj:112)
        at clojure.pprint$pprint_map.invoke(dispatch.clj:106)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.pprint$write_out.invokeStatic(pprint_base.clj:194)
        at clojure.pprint$pprint_map$fn__11193$fn__11195.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map$fn__11193.invoke(dispatch.clj:113)
        at clojure.pprint$pprint_map.invokeStatic(dispatch.clj:112)
        at clojure.pprint$pprint_map.invoke(dispatch.clj:106)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at clojure.pprint$write_out.invokeStatic(pprint_base.clj:194)
        at clojure.pprint$pprint$fn__10434.invoke(pprint_base.clj:249)
        at clojure.pprint$pprint.invokeStatic(pprint_base.clj:248)
        at clojure.pprint$pprint.invoke(pprint_base.clj:241)
        at clojure.pprint$pprint.invokeStatic(pprint_base.clj:245)
        at clojure.pprint$pprint.invoke(pprint_base.clj:241)
        at clojure.lang.Var.invoke(Var.java:386)
        at clojure.main$report_error$fn__9322$fn__9323.invoke(main.clj:604)
        at clojure.main$report_error$fn__9322.invoke(main.clj:603)
        at clojure.main$report_error.invokeStatic(main.clj:602)
        at clojure.main$main.invokeStatic(main.clj:667)
        at clojure.main$main.doInvoke(main.clj:617)
        at clojure.lang.RestFn.applyTo(RestFn.java:140)
        at clojure.lang.Var.applyTo(Var.java:707)
        at clojure.main.main(main.java:40)

I tried the most minimal setup in a test project. The deps.edn looks like this:

{:paths ["notebooks"]
 :deps {org.clojure/clojure {:mvn/version "1.12.1"}
        io.github.nextjournal/clerk {:mvn/version "0.18.1142"}}
 :aliases
 {:clerk
  {:exec-fn nextjournal.clerk/build!
   :exec-args {:paths ["notebooks/foo.clj"]
               :ssr true
               :package :directory
               :out-path "./out"}}}}

notebooks/foo.clj is just:

(ns foo (:require [nextjournal.clerk :as clerk]))

;; # Hello!

I tested it without :ssr true, which works regardless of :package :single-file. The error also happens with Clojure 1.11.1.

Since Babashka is mentioned in babashka.process.Process, I wonder if it has something to do with it? My bb version is 1.12.206, if that matters.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions