lein cljsbuild выдает ошибку "Не удалось написать JavaScript, ноль"
Каждый раз, когда я пытаюсь бежать lein cljsbuild once
Я получаю ошибку:
Не могу написать JavaScript ноль
Любые мысли или идеи будут оценены, так как я застрял на этом некоторое время и, к сожалению, не могу идти дальше.
Вот что я делал.
- Создайте новый проект под названием "Финансы" от runnin
lein new app finance
- Обновите
project.clj
файл с зависимостями, cljsbuild, плагином и основной спецификацией (см. ниже) - Бежать
lein deps
и это работает. - Бежать
lein run
и это тоже работает, выплевывая "Hello World" в консоли. Попробуй запустить
lein cljsbuild once
и тогда я получаю эту ошибку,Could not write JavaScript nil
(defproject finance "0.1.0-SNAPSHOT" :description "FIXME: write description" :plugins [[lein-cljsbuild "1.1.7"]] :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.8.0"] [org.clojure/clojurescript "1.10.238"] [reagent "0.8.0-alpha2"]] :main ^:skip-aot finance.core :target-path "target/%s" :profiles {:uberjar {:aot :all}} :cljsbuild { :builds [{ :source-paths ["src"] :compiler { :output-to "resources/public/javascripts/dev.js" :output-dir "resources/public/javascripts/cljs-dev" :optimizations :none :pretty-print true}}]})
1 ответ
Решение
Начните сначала в новом каталоге. Ваша ошибка использовалась app
вместо figwheel
при создании проекта:
> lein new figwheel fred
> cd fred
> lein cljsbuild once ; => works fine
> lein figwheel ; => starts interactive browser repl
Обычно вы просто используете figwheel
, но cljsbuild once
тоже работает.
Ваш project.clj теперь выглядит следующим образом. Обратите внимание, в частности, на :plugins
раздел, который вы пропустили:
(defproject fred "0.1.0-SNAPSHOT"
:min-lein-version "2.7.1"
:dependencies [[org.clojure/clojure "1.9.0"]
[org.clojure/clojurescript "1.9.946"]
[org.clojure/core.async "0.4.474"]]
:plugins [[lein-figwheel "0.5.15"]
[lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]
:source-paths ["src"]
:cljsbuild {:builds
[{:id "dev"
:source-paths ["src"]
;; The presence of a :figwheel configuration here will cause figwheel to inject the
;; figwheel client into your build
:figwheel {:on-jsload "fred.core/on-js-reload"
;; :open-urls will pop open your application in the default browser once
;; Figwheel has started and compiled your application. Comment this out
;; once it no longer serves you.
:open-urls ["http://localhost:3449/index.html"]}
:compiler {:main fred.core
:asset-path "js/compiled/out"
:output-to "resources/public/js/compiled/fred.js"
:output-dir "resources/public/js/compiled/out"
:source-map-timestamp true
;; To console.log CLJS data-structures make sure you enable devtools in Chrome
;; https://github.com/binaryage/cljs-devtools
:preloads [devtools.preload]}}
;; This next build is a compressed minified build for production. You can build this
;; with: lein cljsbuild once min
{:id "min"
:source-paths ["src"]
:compiler {:output-to "resources/public/js/compiled/fred.js"
:main fred.core
:optimizations :advanced
:pretty-print false}}]}
:profiles {:dev {:dependencies [[binaryage/devtools "0.9.9"]
[figwheel-sidecar "0.5.15"]
[com.cemerick/piggieback "0.2.2"]]
;; need to add dev source path here to get user.clj loaded
:source-paths ["src" "dev"]
;; for CIDER
;; :plugins [[cider/cider-nrepl "0.12.0"]]
:repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}
;; need to add the compliled assets to the :clean-targets
:clean-targets ^{:protect false} ["resources/public/js/compiled"
:target-path]}})