Не удалось скомпилировать в «lein new figwheel foo — — реагент»

#clojure #clojurescript #leiningen #reagent #figwheel

#clojure #clojurescript #leiningen #реагент #figwheel

Вопрос:

Я хочу начать проект с reagent и figwheel, и я уже делал это раньше с помощью этой команды, и это сработало, на самом деле они все еще работают. Но с новым изменились некоторые конфигурации и версии зависимостей, и он больше не начинается с ‘lein fighwheel’. Вот мой project.clj

 (defproject ajedrez1 "0.1.0-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}

  :min-lein-version "2.9.1"

  :dependencies [[org.clojure/clojure "1.10.0"]
                 [org.clojure/clojurescript "1.10.773"]
                 [org.clojure/core.async  "0.4.500"]
                 [reagent "0.10.0" :exclusions [cljsjs/react cljsjs/react-dom cljsjs/react-dom-server]]]

  :plugins [[lein-figwheel "0.5.20"]
            [lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]]

  :source-paths ["src"]

  :cljsbuild {:builds
              [{:id "dev"
                :source-paths ["src"]

                :figwheel {:on-jsload "ajedrez1.core/on-js-reload"
                           :open-urls ["http://localhost:3449/index.html"]}

                :compiler {:main ajedrez1.core
                           :target :bundle
                           :asset-path "js/compiled/out"
                           :output-to "resources/public/js/compiled/out/index.js"
                           :output-dir "resources/public/js/compiled/out"
                           :bundle-cmd {:none ["npx.cmd" "webpack" "--mode=development"]
                                        :default ["npx.cmd" "webpack"]}
                           :source-map-timestamp true
                           
                           :preloads [devtools.preload]}}
              
               {:id "min"
                :source-paths ["src"]
                :compiler {:output-to "resources/public/js/compiled/ajedrez1.js"
                           :main ajedrez1.core
                           :optimizations :advanced
                           :pretty-print false}}]}

  :figwheel {:css-dirs ["resources/public/css"] ;; watch and update CSS}

  :profiles {:dev {:dependencies [[binaryage/devtools "1.0.0"]
                                  [figwheel-sidecar "0.5.20"]]
                   :source-paths ["src" "dev"]
                   :clean-targets ^{:protect false} ["resources/public/js/compiled"
                                                     :target-path]}})
  

Он выдает:

 
Figwheel: Cutting some fruit, just a sec ...
Figwheel: Validating the configuration found in project.clj
Figwheel: Configuration Valid ;)
Figwheel: Starting server at http://0.0.0.0:3449
Figwheel: Watching build - dev
Figwheel: Cleaning build - dev
Compiling build :dev to "resources/public/js/compiled/out/index.js" from ["src"]...
Failed to compile build :dev from ["src"] in 16.531 seconds.
----  Exception    ----

  clojure.lang.ExceptionInfo : :build-cmd :none failed
         java.io.IOException : Cannot run program "npx.cmd": CreateProcess error=2, El sistema no puede encontrar el archivo especificado
         java.io.IOException : CreateProcess error=2, El sistema no puede encontrar el archivo especificado
  

Я попытался вытащить:

 :exclusions [cljsjs/react cljsjs/react-dom cljsjs/react-dom-server]]
:target :bundle
:bundle-cmd {:none ["npx.cmd" "webpack" "--mode=development"]
              :default ["npx.cmd" "webpack"]}
  

потому что в предыдущих проектах его не было, и он был успешно скомпилирован, но браузер показывает только «Проверка шаблона Figwheel на консоли разработчика». с «Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден)» на консоли.

Я попробовал с помощью ‘lein clen’ после добавления:

 :clean-targets ^{:protect false} [:target-path
                                    [:cljsbuild :builds :app :compiler
                                     :output-dir]
                                    [:cljsbuild :builds :app :compiler
                                     :output-to]]
  

но это то же самое.

На всякий случай, у меня было переполнение стека с repl, когда я оцениваю одно и то же выражение более одного раза, время оценки увеличивается с каждым повторением. Я должен периодически перезапускать его.

Комментарии:

1. Исходная ошибка указывает вам установить Node / NPM, поскольку он использует webpack для объединения ваших ресурсов. Что касается второго, какой файл он пытается загрузить, когда вы получаете 404? Скорее всего, вам нужно настроить Figwheel для вывода его JS-файла туда, где Webpack выводил свой пакет, прежде чем вы его удалили.

2. Проблема заключалась в том, что у меня не был установлен npm. Затем это сработало. Большое вам спасибо за ваш ответ и ваше время. Приветствую.