samedhi / firemore

Firebase + Clojure -> Firemore
https://firemore.org/
MIT License
19 stars 4 forks source link

Error when installing with shadow-cljs #61

Open gajewsky opened 4 years ago

gajewsky commented 4 years ago

Hey I just tried to use firemore in an existing shadow-cljs project and during installation I got such error:

$ shadow-cljs watch app
shadow-cljs - config: ~/code/reframe-project/shadow-cljs.edn
shadow-cljs - updating dependencies
shadow-cljs - dependencies updated
failed to start service
{:id :classpath}
ExceptionInfo: failed to start service
        shadow.runtime.services/start-many/fn--8698 (services.clj:135)
        shadow.runtime.services/start-many (services.clj:126)
        shadow.runtime.services/start-many (services.clj:105)
        shadow.runtime.services/start-all (services.clj:144)
        shadow.runtime.services/start-all (services.clj:139)
        shadow.cljs.devtools.server/start-system (server.clj:341)
        shadow.cljs.devtools.server/start-system (server.clj:203)
        shadow.cljs.devtools.server/start! (server.clj:481)
        shadow.cljs.devtools.server/start! (server.clj:382)
        shadow.cljs.devtools.server/start! (server.clj:385)
        shadow.cljs.devtools.server/start! (server.clj:382)
        shadow.cljs.devtools.server/from-cli (server.clj:613)
        shadow.cljs.devtools.server/from-cli (server.clj:589)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:665)
        clojure.core/apply (core.clj:660)
        shadow.cljs.devtools.cli/lazy-invoke (cli.clj:24)
        shadow.cljs.devtools.cli/lazy-invoke (cli.clj:21)
        shadow.cljs.devtools.cli/blocking-action (cli.clj:131)
        shadow.cljs.devtools.cli/blocking-action (cli.clj:118)
        shadow.cljs.devtools.cli/main (cli.clj:179)
        shadow.cljs.devtools.cli/main (cli.clj:134)
        clojure.core/apply (core.clj:669)
        clojure.core/apply (core.clj:660)
        shadow.cljs.devtools.cli/-main (cli.clj:221)
        shadow.cljs.devtools.cli/-main (cli.clj:219)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:665)
        clojure.main/main-opt (main.clj:514)
        clojure.main/main-opt (main.clj:510)
        clojure.main/main (main.clj:664)
        clojure.main/main (main.clj:616)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.main.main (main.java:40)
Caused by:
~/m2/repository/cljsjs/firebase/7.1.0-1/firebase-7.1.0-1.jar deps.cljs refers to file not in jar: cljsjs/common/firebase-analytics-externs.js
{:tag :shadow.build.classpath/deps-cljs, :source-path #object[java.io.File 0x41aa99fc "~/m2/repository/cljsjs/firebase/7.1.0-1/firebase-7.1.0-1.jar"], :name "cljsjs/common/firebase-analytics-externs.js"}
ExceptionInfo: ~/m2/repository/cljsjs/firebase/7.1.0-1/firebase-7.1.0-1.jar deps.cljs refers to file not in jar: cljsjs/common/firebase-analytics-externs.js
        shadow.build.classpath/process-deps-cljs/get-index-rc--9900 (classpath.clj:261)
        shadow.build.classpath/process-deps-cljs/fn--9919 (classpath.clj:342)
        clojure.core/map/fn--5862/fn--5863 (core.clj:2742)
        clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
        clojure.core/transduce (core.clj:6883)
        clojure.core/into (core.clj:6899)
        clojure.core/into (core.clj:6887)
        shadow.build.classpath/process-deps-cljs (classpath.clj:342)
        shadow.build.classpath/process-deps-cljs (classpath.clj:223)
        shadow.build.classpath/process-root-contents (classpath.clj:532)
        shadow.build.classpath/process-root-contents (classpath.clj:528)
        shadow.build.classpath/find-jar-resources (classpath.clj:562)
        shadow.build.classpath/find-jar-resources (classpath.clj:535)
        shadow.build.classpath/find-resources (classpath.clj:638)
        shadow.build.classpath/find-resources (classpath.clj:629)
        shadow.build.classpath/index-path* (classpath.clj:869)
        shadow.build.classpath/index-path* (classpath.clj:866)
        clojure.lang.PersistentVector.reduce (PersistentVector.java:343)
        clojure.core/reduce (core.clj:6827)
        clojure.core/reduce (core.clj:6810)
        shadow.build.classpath/index-classpath/fn--10091/fn--10092 (classpath.clj:988)
        clojure.lang.Atom.swap (Atom.java:37)
        clojure.core/swap! (core.clj:2352)
        clojure.core/swap! (core.clj:2345)
        shadow.build.classpath/index-classpath/fn--10091 (classpath.clj:988)
        shadow.build.classpath/index-classpath (classpath.clj:987)
        shadow.build.classpath/index-classpath (classpath.clj:982)
        shadow.build.classpath/index-classpath (classpath.clj:984)
        shadow.build.classpath/index-classpath (classpath.clj:982)
        shadow.cljs.devtools.server.common/fn--14791 (common.clj:92)
        shadow.cljs.devtools.server.common/fn--14791 (common.clj:90)
        clojure.core/apply (core.clj:665)
        clojure.core/apply (core.clj:660)
        shadow.runtime.services/start-one (services.clj:98)
        shadow.runtime.services/start-one (services.clj:87)
        shadow.runtime.services/start-many/fn--8698 (services.clj:127)
        shadow.runtime.services/start-many (services.clj:126)
        shadow.runtime.services/start-many (services.clj:105)
        shadow.runtime.services/start-all (services.clj:144)
        shadow.runtime.services/start-all (services.clj:139)
        shadow.cljs.devtools.server/start-system (server.clj:341)
        shadow.cljs.devtools.server/start-system (server.clj:203)
        shadow.cljs.devtools.server/start! (server.clj:481)
        shadow.cljs.devtools.server/start! (server.clj:382)
        shadow.cljs.devtools.server/start! (server.clj:385)
        shadow.cljs.devtools.server/start! (server.clj:382)
        shadow.cljs.devtools.server/from-cli (server.clj:613)
        shadow.cljs.devtools.server/from-cli (server.clj:589)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:665)
        clojure.core/apply (core.clj:660)
        shadow.cljs.devtools.cli/lazy-invoke (cli.clj:24)
        shadow.cljs.devtools.cli/lazy-invoke (cli.clj:21)
        shadow.cljs.devtools.cli/blocking-action (cli.clj:131)
        shadow.cljs.devtools.cli/blocking-action (cli.clj:118)
        shadow.cljs.devtools.cli/main (cli.clj:179)
        shadow.cljs.devtools.cli/main (cli.clj:134)
        clojure.core/apply (core.clj:669)
        clojure.core/apply (core.clj:660)
        shadow.cljs.devtools.cli/-main (cli.clj:221)
        shadow.cljs.devtools.cli/-main (cli.clj:219)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:665)
        clojure.main/main-opt (main.clj:514)
        clojure.main/main-opt (main.clj:510)
        clojure.main/main (main.clj:664)
        clojure.main/main (main.clj:616)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.main.main (main.java:40)

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
gajewsky commented 4 years ago

I was able to find the cause of this error

firemore depends on cljsjs version of firebase and cljsjs its not supported by shadow-cljs. The workaround probably would be allowing somehow to use npm version of firebase.

samedhi commented 3 years ago

I was able to find the cause of this error

firemore depends on cljsjs version of firebase and cljsjs its not supported by shadow-cljs. The workaround probably would be allowing somehow to use npm version of firebase.

I am sorry that I took so long to reply to this (just noticed it). Yeah, it is a bit of a pain in the ass with the duality of cljsjs vs. shadow-cljs . My feeling is that a larger and larger (no idea if a majority of people yet) number of people are using shadow at this point, so maybe I should figure out how to get that working.

Let me know if you have any ideas on how this could be done under a single codebase. Maybe the best alternative would be two separate projects (one for shadow and one for cljsjs), not sure.

samedhi commented 3 years ago

Also, I made the following project https://github.com/samedhi/firemore-start-template that you can use as a github template if you are just interested in getting started quick. It uses figwheel-main and you need to run the change_project_name command within it to set it to your project, but it should be a little easier to get started.