This is essentially the issue that was reported on clojurescript itself as CLJS-2529: https://clojure.atlassian.net/projects/CLJS/issues/CLJS-2529
And subsequently fixed in clojure/clojurescript@8670cc4
However, that fix expects java.class.path to contain all relevant resources including extern JS files (when on Java 9+). That's not true for boot, where it only contains the boot executable. As a result externs remain ignored on Java 9+ when compiling as part of a boot build.
I'm not entirely sure how to best fix this. I've experimented with a hack that comes down to doing (System/setProperty "java.class.path" (get-env :fake-class-path)) before running the cljs task. This appears to work (externs are used etc) but I'm not sure what side effects it might have on other consumers of that classpath property. If this step was performed inside boot-cljs its scope could be restricted to the cljs build more easily.
This is essentially the issue that was reported on clojurescript itself as CLJS-2529: https://clojure.atlassian.net/projects/CLJS/issues/CLJS-2529
And subsequently fixed in clojure/clojurescript@8670cc4
However, that fix expects
java.class.pathto contain all relevant resources including extern JS files (when on Java 9+). That's not true for boot, where it only contains the boot executable. As a result externs remain ignored on Java 9+ when compiling as part of a boot build.I'm not entirely sure how to best fix this. I've experimented with a hack that comes down to doing
(System/setProperty "java.class.path" (get-env :fake-class-path))before running thecljstask. This appears to work (externs are used etc) but I'm not sure what side effects it might have on other consumers of that classpath property. If this step was performed inside boot-cljs its scope could be restricted to the cljs build more easily.