1

私はほとんど一日中 figwheel を使用していましたが、再起動後 (最初ではない) 突然、コンパイルに失敗し始めました。

を実行すると、次のメッセージが表示されますlein figwheel

Figwheel: Starting server at http://localhost:3449
Figwheel: Watching build - dev
[0mCompiling "resources/public/js/compiled/game.js" from ["src"]...
{:file #object[java.net.URL 0x79b3937a "file:/home/dan/dev/org/danjoe/game/src/game/state.cljs"], :line 1, :column 1, :tag :cljs/analysis-error}
ANALYSIS ERROR:  at line 1 file:/home/dan/dev/org/danjoe/game/src/game/state.cljs on file file:/home/dan/dev/org/danjoe/game/src/game/state.cljs, line 1, column 1
Subprocess failed

以前から安定したコードをいくつかチェックアウトしましたが、それでも失敗します。

ディレクトリ内のすべてを吹き飛ばして、~/.m2もう一度行きました。レポの新しいコピーをチェックアウトしたところ、同じエラーが発生しました。

エラーの唯一の意味のある部分は、ANALYSIS ERRORあるファイルの 1 行目への参照です。

(ns game.state
  (:refer-clojure :exclude [get])
  (:require [reagent.core :as reagent]
            [game.views.heroes :as default-view]))

そのファイルに移動し、故意に名前空間を壊して (間違ったものに切り替えて)lein figwheel再度実行すると、解析エラーはプロジェクト内の別のファイルを指すように切り替わるだけです。すべての名前空間を壊すと、2 行目 (または次の s 式がある場所) で分析エラーがスローされ始めます。

プロジェクトの依存関係は次のとおりです。

:dependencies [[org.clojure/clojure "1.7.0"]
              [org.clojure/clojurescript "1.7.170"]
              [org.clojure/core.async "0.2.374"]
              [reagent "0.5.0"]
              [secretary "1.2.0"]]

そして、私が使用しているプラ​​グイン。

  :plugins [[lein-cljsbuild "1.1.1"]
           [lein-figwheel "0.5.0-1"]]
4

2 に答える 2

0

エラーは最終的に循環依存でしたが、Clojurescript 1.7.170 のバグにより、アナライザーは依存関係をキャッチせず、代わりに無限サイクルで両方の依存関係を再帰的に分析していました (スタックがオーバーフローするまで)。

バグは現在 master で修正されていますが、どのように特定されたかの概要をここに残しておきます。

  1. スタンドアロンの Clojurescript コンパイラを使用して、ツールがエラーを飲み込んでいないことを確認します。
  2. オプションでコンパイルし{:verbose true}ます

デバッグ出力の開始を参照して、循環依存関係を示します。

Reading analysis cache for jar:file:/home/dan/Downloads/cljs.jar!/cljs/core.cljs
Compiling src/game/ui/widgets.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
Analyzing file:/tmp/lispjam/src/game/views/heroes.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
Analyzing file:/tmp/lispjam/src/game/views/heroes.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
Analyzing file:/tmp/lispjam/src/game/views/heroes.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
Analyzing file:/tmp/lispjam/src/game/views/heroes.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
Analyzing file:/tmp/lispjam/src/game/views/heroes.cljs
Analyzing file:/tmp/lispjam/src/game/state.cljs
...

循環依存関係を解決するとすべてが修正されますが、Clojurescript の将来のバージョンでは、コードに循環依存関係があることを知らせるコンパイル時間分析の警告が表示されるはずです。

于 2016-01-07T03:10:12.263 に答える