bhauman / lein-figwheel

Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding!
Eclipse Public License 1.0
2.88k stars 210 forks source link

Don't try to open cljs file if it doesn't exist #739

Closed iarenaza closed 4 years ago

iarenaza commented 5 years ago

lein-figwheel expects files with .js extension inside its source directories to be foreign libraries. And foreign libraries must declare a namespace. In fact, lein-figwheel assumes it, and if it doesn't find it and can't map the file back to a source .cljs file, it bombs out with a NullPointerException when trying to check for its existance.

This might happen when you put your externs file(s) inside the source directories (this is in fact the case that led to the discovery of this issue).

While lein-figwheel doesn't by default try to process such files on its own, when using Duct server.figwheel it tells lein-figwheel to proccess all files inside the configured source directories (see https://github.com/duct-framework/server.figwheel/blob/master/src/duct/server/figwheel.clj#L54-L55).

Clearly Duct server.figwheel shouldn't be telling lein-figwheel to process absolutely all files in source directories (but probably just those having .cljs/cljc extension or those declared as foreign libraries[1]).

But on the other hand, lein-figwheel should be more robust and handle that situation in a more graceful way.

[1] We have opened an issue in Duct server.figwheel regarding this behaviour.