Fork me on GitHub
#leiningen
<
2017-11-17
>
derpocious01:11:43

hey guys, I just watched this awesome intro to leiningen video on youtube: https://www.youtube.com/watch?v=mDwNgQhh0hY

derpocious01:11:45

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.

derpocious03:11:21

Thanks @gonewest818, can you explain a bit more what I should configure it to?

gonewest81803:11:43

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}

derpocious03:11:03

hmm this is my project.cljs. I don't see any :repl-optins

derpocious03:11:08

(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}}})

derpocious04:11:48

When I add it I get this:

derpocious04:11:04

(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}
}}})

derpocious04:11:53

but then the error when lein repl starts up:

derpocious04:11:55

#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=>

derpocious04:11:32

And it does not see any of my functions -_-

derpocious04:11:23

using leiningen is quite hard

gonewest81805:11:28

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
}}})

gonewest81805:11:23

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

derpocious12:11:30

Thanks gone west. I have ensured all these things, but I am still just getting errors

derpocious12:11:35

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)

derpocious12:11:27

perhaps I have a bad java version?

derpocious12:11:28

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)

manutter5112:11:32

@derpocious are you by any chance trying to build a nodejs/cljs app?

derpocious12:11:56

but not build it, access the namespace from lein repl

manutter5112:11:57

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

manutter5112:11:18

Are you familiar with figwheel?

manutter5112:11:02

If you’re not, I think that’s where you need to start

derpocious13:11:57

but my project is not set up with figwheel

derpocious13:11:05

can I just add it to any cljs project?

manutter5113:11:26

I haven’t done that myself, but I don’t see why not

manutter5113:11:52

It seems there’s a #lein-figwheel channel here too, so yay

derpocious13:11:03

Interesting. Thanks

derpocious13:11:29

do you by any chance know of another cljs repl?

manutter5113:11:27

Not really, I’ve always just used figwheel. It’s pretty awesome

gonewest81817:11:37

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.

michaelblume21:11:10

When leiningen compiles java source files

michaelblume21:11:19

does it support annotation processing/code generation?

michaelblume21:11:39

Like can I include an interface with immutables annotation and get the builder and so forth generated?

noisesmith21:11:36

it calls javac - maybe I’m misinterpreting your question?