lein cljsbuild выдает ошибку "Не удалось написать JavaScript, ноль"

Каждый раз, когда я пытаюсь бежать lein cljsbuild once Я получаю ошибку:

Не могу написать JavaScript ноль

Любые мысли или идеи будут оценены, так как я застрял на этом некоторое время и, к сожалению, не могу идти дальше.

Вот что я делал.

  1. Создайте новый проект под названием "Финансы" от runnin lein new app finance
  2. Обновите project.clj файл с зависимостями, cljsbuild, плагином и основной спецификацией (см. ниже)
  3. Бежать lein deps и это работает.
  4. Бежать lein run и это тоже работает, выплевывая "Hello World" в консоли.
  5. Попробуй запустить 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]}})
Другие вопросы по тегам