This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-11-17
Channels
- # bangalore-clj (4)
- # beginners (60)
- # boot (63)
- # cider (2)
- # cljs-dev (22)
- # cljsrn (3)
- # clojars (32)
- # clojure (133)
- # clojure-gamedev (1)
- # clojure-germany (17)
- # clojure-italy (1)
- # clojure-russia (11)
- # clojure-serbia (16)
- # clojure-spec (35)
- # clojure-uk (75)
- # clojurebridge (1)
- # clojurescript (83)
- # community-development (25)
- # core-async (43)
- # cursive (15)
- # datomic (28)
- # emacs (2)
- # fulcro (108)
- # graphql (5)
- # hoplon (15)
- # lein-figwheel (6)
- # leiningen (39)
- # lumo (106)
- # new-channels (1)
- # off-topic (4)
- # om (26)
- # om-next (53)
- # onyx (46)
- # other-languages (2)
- # perun (1)
- # protorepl (5)
- # re-frame (13)
- # ring (18)
- # ring-swagger (1)
- # rum (6)
- # shadow-cljs (82)
- # spacemacs (19)
- # specter (5)
- # sql (3)
- # test-check (31)
- # unrepl (12)
- # untangled (2)
- # vim (109)
hey guys, I just watched this awesome intro to leiningen video on youtube: https://www.youtube.com/watch?v=mDwNgQhh0hY
In this video he says lein repl
automatically puts him in the project namespace, but when I try do it I the promt just says "user" and I can't seem to add other namespaces.
the initial namespace is configurable in your project: https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L367-L369
Thanks @gonewest818, can you explain a bit more what I should configure it to?
Well for example if your project is “foo” and the namespace you want to start in is “foo.core” then in your project.cls it’s :repl-options {:init-ns foo.core}
hmm this is my project.cljs. I don't see any :repl-optins
(defproject jims-bas-ic-cljs-cron "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/clojurescript "1.8.51"]
[io.nervous/cljs-lambda "0.3.5"]]
:plugins [[lein-npm "0.6.2"]
[io.nervous/lein-cljs-lambda "0.6.6"]]
:npm {:dependencies [[serverless-cljs-plugin "0.1.2"]]}
:cljs-lambda {:compiler
{:inputs ["src"]
:options {:output-to "target/jims-bas-ic-cljs-cron/jims_bas_ic_cljs_cron.js"
:output-dir "target/jims-bas-ic-cljs-cron"
:target :nodejs
:language-in :ecmascript5
:optimizations :none}}})
When I add it I get this:
(defproject jims-bas-ic-cljs-cron "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/clojurescript "1.8.51"]
[io.nervous/cljs-lambda "0.3.5"]]
:plugins [[lein-npm "0.6.2"]
[io.nervous/lein-cljs-lambda "0.6.6"]]
:npm {:dependencies [[serverless-cljs-plugin "0.1.2"]]}
:repl-options {:init-ns jims_bas_ic_cljs_cron.core}
:cljs-lambda {:compiler
{:inputs ["src"]
:options {:output-to "target/jims-bas-ic-cljs-cron/jims_bas_ic_cljs_cron.js"
:output-dir "target/jims-bas-ic-cljs-cron"
:target :nodejs
:language-in :ecmascript5
:optimizations :none
:repl-options {:init-ns foo.core}
}}})
but then the error when lein repl starts up:
#error { :cause Could not locate jims_bas_ic_cljs_cron/core__init.class or jims_bas_ic_cljs_cron/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name. :via [{:type java.io.FileNotFoundException :message Could not locate jims_bas_ic_cljs_cron/core__init.class or jims_bas_ic_cljs_cron/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name. :at [clojure.lang.RT load RT.java 456]}] :trace [[clojure.lang.RT load RT.java 456] [clojure.lang.RT load RT.java 419] [clojure.core$load$fn__5677 invoke core.clj 5893] [clojure.core$load invokeStatic core.clj 5892] [clojure.core$load doInvoke core.clj 5876] [clojure.lang.RestFn invoke RestFn.java 408] [clojure.core$load_one invokeStatic core.clj 5697] [clojure.core$load_one invoke core.clj 5692] [clojure.core$load_lib$fn__5626 invoke core.clj 5737] [clojure.core$load_lib invokeStatic core.clj 5736] [clojure.core$load_lib doInvoke core.clj 5717] [clojure.lang.RestFn applyTo RestFn.java 142] [clojure.core$apply invokeStatic core.clj 648] [clojure.core$load_libs invokeStatic core.clj 5774] [clojure.core$load_libs doInvoke core.clj 5758] [clojure.lang.RestFn applyTo RestFn.java 137] [clojure.core$apply invokeStatic core.clj 648] [clojure.core$require invokeStatic core.clj 5796] [clojure.core$require doInvoke core.clj 5796] [clojure.lang.RestFn invoke RestFn.java 408] [user$eval5 invokeStatic form-init6925752198294118641.clj 1] [user$eval5 invoke form-init6925752198294118641.clj 1] [clojure.lang.Compiler eval Compiler.java 6927] [clojure.lang.Compiler eval Compiler.java 6916] [clojure.lang.Compiler eval Compiler.java 6916] [clojure.lang.Compiler load Compiler.java 7379] [clojure.lang.Compiler loadFile Compiler.java 7317] [clojure.main$load_script invokeStatic main.clj 275] [clojure.main$init_opt invokeStatic main.clj 277] [clojure.main$init_opt invoke main.clj 277] [clojure.main$initialize invokeStatic main.clj 308] [clojure.main$null_opt invokeStatic main.clj 342] [clojure.main$null_opt invoke main.clj 339] [clojure.main$main invokeStatic main.clj 421] [clojure.main$main doInvoke main.clj 384] [clojure.lang.RestFn invoke RestFn.java 421] [clojure.lang.Var invoke Var.java 383] [clojure.lang.AFn applyToHelper AFn.java 156] [clojure.lang.Var applyTo Var.java 700] [clojure.main main main.java 37]]} nREPL server started on port 50663 on host 127.0.0.1 - <nrepl://127.0.0.1:50663> REPL-y 0.3.7, nREPL 0.2.12 Clojure 1.8.0 Java HotSpot(TM) 64-Bit Server VM 1.8.0_121-b13 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e jims_bas_ic_cljs_cron.core=>
And it does not see any of my functions -_-
using leiningen is quite hard
Try this:
(defproject jims-bas-ic-cljs-cron "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/clojurescript "1.8.51"]
[io.nervous/cljs-lambda "0.3.5"]]
:plugins [[lein-npm "0.6.2"]
[io.nervous/lein-cljs-lambda "0.6.6"]]
:npm {:dependencies [[serverless-cljs-plugin "0.1.2"]]}
:repl-options {:init-ns jims-bas-ic-cljs-cron.core} ; *** note: dashes in namespaces ***
:cljs-lambda {:compiler
{:inputs ["src"]
:options {:output-to "target/jims-bas-ic-cljs-cron/jims_bas_ic_cljs_cron.js"
:output-dir "target/jims-bas-ic-cljs-cron"
:target :nodejs
:language-in :ecmascript5
:optimizations :none
}}})
Check that you have a source file named src/jims_bas_ic_cljs_cron/core.clj
. In this file the namespace should be declared like: (ns jims-bas-ic-cljs-cron.core
Thanks gone west. I have ensured all these things, but I am still just getting errors
jims-bas-ic-cljs-cron (master) ♘ lein repl
#error {
:cause Could not locate jims_bas_ic_cljs_cron/core__init.class or jims_bas_ic_cljs_cron/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.
:via
[{:type java.io.FileNotFoundException
:message Could not locate jims_bas_ic_cljs_cron/core__init.class or jims_bas_ic_cljs_cron/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.
:at [clojure.lang.RT load RT.java 456]}]
:trace
[[clojure.lang.RT load RT.java 456]
[clojure.lang.RT load RT.java 419]
[clojure.core$load$fn__5677 invoke core.clj 5893]
[clojure.core$load invokeStatic core.clj 5892]
[clojure.core$load doInvoke core.clj 5876]
[clojure.lang.RestFn invoke RestFn.java 408]
[clojure.core$load_one invokeStatic core.clj 5697]
[clojure.core$load_one invoke core.clj 5692]
[clojure.core$load_lib$fn__5626 invoke core.clj 5737]
[clojure.core$load_lib invokeStatic core.clj 5736]
[clojure.core$load_lib doInvoke core.clj 5717]
[clojure.lang.RestFn applyTo RestFn.java 142]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$load_libs invokeStatic core.clj 5774]
[clojure.core$load_libs doInvoke core.clj 5758]
[clojure.lang.RestFn applyTo RestFn.java 137]
[clojure.core$apply invokeStatic core.clj 648]
[clojure.core$require invokeStatic core.clj 5796]
[clojure.core$require doInvoke core.clj 5796]
[clojure.lang.RestFn invoke RestFn.java 408]
[user$eval5 invokeStatic form-init5761976082338425015.clj 1]
[user$eval5 invoke form-init5761976082338425015.clj 1]
[clojure.lang.Compiler eval Compiler.java 6927]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler eval Compiler.java 6916]
[clojure.lang.Compiler load Compiler.java 7379]
[clojure.lang.Compiler loadFile Compiler.java 7317]
[clojure.main$load_script invokeStatic main.clj 275]
[clojure.main$init_opt invokeStatic main.clj 277]
[clojure.main$init_opt invoke main.clj 277]
[clojure.main$initialize invokeStatic main.clj 308]
[clojure.main$null_opt invokeStatic main.clj 342]
[clojure.main$null_opt invoke main.clj 339]
[clojure.main$main invokeStatic main.clj 421]
[clojure.main$main doInvoke main.clj 384]
[clojure.lang.RestFn invoke RestFn.java 421]
[clojure.lang.Var invoke Var.java 383]
[clojure.lang.AFn applyToHelper AFn.java 156]
[clojure.lang.Var applyTo Var.java 700]
[clojure.main main main.java 37]]}
nREPL server started on port 50863 on host 127.0.0.1 -
REPL-y 0.3.7, nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_121-b13
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
jims-bas-ic-cljs-cron.core=> (derp)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: derp in this context, compiling:(/private/var/folders/41/b5ntx4mn2mv9qk3jyxnsnk_w0000gn/T/form-init5761976082338425015.clj:1:1)
perhaps I have a bad java version?
java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
@derpocious are you by any chance trying to build a nodejs/cljs app?
yes I am
but not build it, access the namespace from lein repl
Ok, I think at least part of the problem here is that your lein repl is looking for Java classes to run, so it’s ignoring all your cljs (JS-based) namespaces
Are you familiar with figwheel?
If you’re not, I think that’s where you need to start
but my project is not set up with figwheel
can I just add it to any cljs project?
I haven’t done that myself, but I don’t see why not
It seems there’s a #lein-figwheel channel here too, so yay
Interesting. Thanks
do you by any chance know of another cljs repl?
Not really, I’ve always just used figwheel. It’s pretty awesome
Ah, now I see. This is server side cljs (actually its “serverless” as in lambda) so you likely want your repl to be whatever JavaScript engine Amazon is using under the hood... The #aws-lambda channel is probably more appropriate forum to get that sorted.
When leiningen compiles java source files
does it support annotation processing/code generation?
Like can I include an interface with immutables
annotation and get the builder and so forth generated?
it calls javac - maybe I’m misinterpreting your question?