I'm using Figwheel with Node, and noticed a bug with timestamped source maps. When the {{:source-map-timestamp}} compiler flag is set, the {{sourceMappingURL}} is set to {{source.js.map?timestamp}}.
This works fine in the browser, but breaks in Node where files are loaded from the filesystem. It looks like a simple workaround would be to check if {{:target}} is {{:node}} and output something like {{source.js.timestamp.map}} instead, and use it directly as the value of {{sourceMappingURL}}.
Here's a change I made locally in {{cljs.compiler/emit-source-map}} that allows source maps to be resolved on Node when using timestamps:
{code:title=emit-source-map}
(defn emit-source-map [src dest sm-data opts]
(let [timestamp (System/currentTimeMillis)
filename (str (.getPath ^File dest)
(when (and
(true? (:source-map-timestamp opts))
(= (:target opts) :nodejs))
(str "." timestamp))
".map")
sm-file (io/file filename)]
(if-let [smap (:source-map-asset-path opts)]
(emits "\n//# sourceMappingURL=" smap
(string/replace (util/path sm-file)
(str (util/path (io/file (:output-dir opts))))
"")
(if (and (true? (:source-map-timestamp opts))
(not= (:target opts) :nodejs))
(str
(if-not (string/index-of smap "?") "?" "&")
"rel=" timestamp)
""))
(emits "\n//# sourceMappingURL="
(or (:source-map-url opts) (.getName sm-file))
(if (and (true? (:source-map-timestamp opts))
(not= (:target opts) :nodejs))
(str "?rel=" timestamp)
"")))
(spit sm-file
(sm/encode {(url-path src) (:source-map sm-data)}
{:lines (+ (:gen-line sm-data) 2)
:file (url-path dest)
:source-map-path (:source-map-path opts)
:source-map-timestamp (:source-map-timestamp opts)
:source-map-pretty-print (:source-map-pretty-print opts)
:relpaths {(util/path src)
(util/ns->relpath (first (:provides opts)) (:ext opts))}}))))