This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-11-29
Channels
- # announcements (1)
- # babashka (1)
- # beginners (46)
- # calva (2)
- # cider (6)
- # circleci (10)
- # clj-kondo (2)
- # cljsrn (2)
- # clojure (30)
- # clojure-dev (6)
- # clojuredesign-podcast (8)
- # clojurescript (28)
- # conjure (1)
- # core-logic (2)
- # core-matrix (2)
- # cryogen (16)
- # figwheel-main (2)
- # graalvm (4)
- # jobs (1)
- # malli (15)
- # minimallist (1)
- # off-topic (70)
- # pathom (4)
- # reagent (3)
- # releases (2)
- # remote-jobs (8)
- # rewrite-clj (3)
- # shadow-cljs (4)
- # tools-deps (29)
- # uncomplicate (3)
Does anyone have any idea why I'd be getting a circular deps error on my second build? (The first one is fine).
leif@FEM ~/src/interactive-syntax (main*) $ clojure -A:package
2020-11-29 00:36:21.164:INFO::main: Logging initialized @3122ms to org.eclipse.jetty.util.log.StdErrLog
[Figwheel] Compiling build prod to "target/public/cljs-out/prod/main.js"
Nov 29, 2020 12:36:58 AM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /home/leif/src/interactive-syntax/target/public/cljs-out/prod/cljs/compiler.js:860: WARNING - [JSC_REGEXP_REFERENCE] References to the global RegExp object prevents optimization of regular expressions.
cljs.compiler.emit_constant_STAR_.cljs$core$IMultiFn$_add_method$arity$3(null,RegExp,(function (x){
^^^^^^
Nov 29, 2020 12:36:58 AM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /home/leif/src/interactive-syntax/target/public/cljs-out/prod/interactive_syntax/core.js:47: WARNING - [JSC_PARTIAL_NAMESPACE] Partial alias created for namespace cljs, possibly due to await/yield transpilation.
This may prevent optimization of anything nested under this namespace.
See for more details.
(runner.g = ({"cljs": cljs}));
^^^^
Nov 29, 2020 12:36:58 AM com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 0 error(s), 2 warning(s)
[Figwheel] Successfully compiled build prod to "target/public/cljs-out/prod/main.js" in 35.165 seconds.
[Figwheel] Bundling: npx webpack --mode=production src/js/bundle.js ./target/public/cljs-out/prod/main.js --output-path ./target/public/cljs-out/prod --output-filename main_bundle.js
leif@FEM ~/src/interactive-syntax (main*) $ clojure -A:package
2020-11-29 00:41:26.361:INFO::main: Logging initialized @3092ms to org.eclipse.jetty.util.log.StdErrLog
[Figwheel] Compiling build prod to "target/public/cljs-out/prod/main.js"
[Figwheel] Failed to compile build prod in 10.046 seconds.
[Figwheel:WARNING] Could not Analyze: Assert failed: Circular dependency detected, cljs.core -> cljs.core
(every? (fn* [p1__2127#] (not (contains? *cljs-dep-set* p1__2127#))) deps) target/public/cljs-out/prod/cljs/core.cljc
[Figwheel:SEVERE] failed compiling file:target/public/cljs-out/prod/cljs/core.cljc
Unexpected error (AssertionError) compiling at (REPL:1).
Assert failed: Circular dependency detected, cljs.core -> cljs.core
(every? (fn* [p1__2127#] (not (contains? *cljs-dep-set* p1__2127#))) deps)
Full report at:
/tmp/clojure-5618560910518765653.edn
With the following deps:
{:deps {org.clojure/core.match {:mvn/version "1.0.0"}
org.clojure/tools.reader {:mvn/version "1.3.3"}
reagent {:mvn/version "0.10.0" :exclusions [cljsjs/react cljsjs/react-dom]}
alandipert/storage-atom {:mvn/version "1.2.4"}
com.bhauman/figwheel-main {:mvn/version "0.2.12"}
com.bhauman/rebel-readline-cljs {:mvn/version "0.1.4"}}
:paths ["src" "target" "resources" "env/dev/cljs" "env/prod/cljs"]}}
@p-himik Ah, okay. FWIW, the figwheel-main tutorial (https://figwheel.org/tutorial) does put target in the paths. Is that wrong, or is there a different reason they do that?
> This directory is automatically added to the > classpath so that the compiled assets can be found and served by the > built-in webserver. Well, if they're mixing the classpath for building CLJS and the classpass for serving compiled files then it's certainly wrong.
(I was left not really understanding what the classpath is used for after reading that tutorial)
Hi guys, I'm trying to do an advanced compile and deployment of my webapp into an ec2 instance ... I am getting ...
ubuntu@ip-172-31-71-196:~/dbfrontend-clone/src/dbfrontend$ lein do clean, cljsbuild once min
*** Warning: This project requires Leiningen 2.9.1, but you have 2.8.1 ***
Get the latest version of Leiningen at or by executing
"lein upgrade".
Compiling ClojureScript...
Compiling ["resources/public/js/compiled/dbfrontend.js"] from ["src"]...
module.js:549
throw err;
^
Error: Cannot find module '@cljs-oss/module-deps'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at [eval]:8:13
at ContextifyScript.Script.runInThisContext (vm.js:50:33)
at Object.runInThisContext (vm.js:139:38)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:652:30)
at evalScript (bootstrap_node.js:463:27)
Successfully compiled ["resources/public/js/compiled/dbfrontend.js"] in 25.769 seconds.
This is my repo btw https://github.com/zackteo/dbfrontend-clone Not sure if there's issues with project.clj
I would try upgrading leiningen first: https://leiningen.org/#install
@p-himik Looking at the clojure docs here: https://clojure.org/guides/deps_and_cli#aot_compilation, it seems it would indicate adding traget
to the classpath is the right thing to do, is this a difference between clojure and clojurescript?
Yes. In Clojure, compiled files take precedence over older sources - they completely replace them.
In ClojureScript, there's no such thing (unless we're talking about only CLJS files, but target
also has JS files) - all files are added together.
Even if it was possible, it would still be detrimental - your CLJS compilation process has absolutely nothing to do with your backend operations. So it doesn't make any sense to pollute the backend classpath with the stuff from the CLJS compilation classpath that, apart from just the sources, can have some third-party dependencies that bring in yet other dependencies.
@p-himik Hmm...I still am getting circular dependency errors, even after a clean rebuild. Any other ideas?
Oh, wait - the docs said that "target"
is implicitly added to the paths by Figwheel, I think.
If that's indeed the case then it might be better to ask it in #figwheel - I've switched over to shadow-cljs a few years ago.
@p-himik So, when I last looked at shadow-cljs, it seemed to include npm packages directly. Does that mean you can't use webpack with shadow-cljs?
I've never used Webpack but it seems like it's possible: https://shadow-cljs.github.io/docs/UsersGuide.html#target-npm-module