./script/uberjar
若要回報問題,請在 ask.clojure.org 的 ClojureScript 類別下提出問題,並加上 problem
標籤。CLJS 開發人員可以評估並判斷是否為問題。如有必要,他們可以在 ClojureScript 問題追蹤器 中提交工單。
在提交任何問題之前,務必先徹底了解快速入門。即使您是經驗豐富的 ClojureScript 開發人員,這也是必讀的內容。
此外,確保您正在執行最新發布的 ClojureScript 版本也會有所幫助。此外,檢查 ClojureScript master 版本是明智之舉 — 經常在發現錯誤時,會快速提交修復(請參閱下方說明)。
然而,重要的是僅使用 ClojureScript 回報錯誤。下游工具通常會以非簡單的方式與 ClojureScript 編譯器互動,而將問題隔離到 ClojureScript 的最佳方法是將它們從報告中完全移除。
請透過從 master 建置 uberjar 並使用它來驗證問題,以此回報問題。使用此 uberjar 與 cljs.main
建立最小重現是理想的作法。或者,使用 clj
和 deps.edn
也是可以接受的。請勿使用任何其他第三方工具 (Maven、Leiningen、Boot)。建立問題時,請將所有相關說明和程式碼加入到工單中,以便直接重現,或透過其他評論加入。請勿附加專案、專案連結、gist/pastebin 連結,或 zip 檔案。
啟動問題可能需要特別考慮。請參閱回報啟動問題以了解更多詳細資訊。 |
在驗證問題時,先檢查 master 版本是否已解決問題可能會很有用。請勿使用此方法回報問題,這僅供您自行驗證 master 版本時方便使用。建立 ClojureScript 儲存庫的簽出。從專案的根目錄執行以下命令
./script/build
這會將 ClojureScript 安裝到您的本機 Maven 中。請記下滾動顯示的版本。根據您的工具適當使用此版本。
如果您發現回歸,則在回報問題時,識別有關第一個錯誤提交的資訊會很有幫助。這很容易做到,方法是首先將 ClojureScript 的簽出作為本機根目錄相依性,然後使用 git bisect
。
對於此範例,假設您發現回歸可以直接在 REPL 中重現(如果不是,可以採用以下變體)。
首先簽出 ClojureScript master 版本,並 cd
到簽出樹狀結構的最上層。
假設您可以在 master 版本上重現問題,但使用 ClojureScript 1.10.748 時正常運作,請在簽出樹狀結構的最上層發出以下命令
git bisect start
git bisect bad HEAD
git bisect good r1.10.748
然後(在另一個目錄中)針對簽出樹狀結構的目前狀態啟動 REPL,方法是發出
clj -Srepro -Sdeps '{:deps {org.clojure/clojurescript {:local/root "/<path-to-checkout>/clojurescript"}}}' -m cljs.main -r
測試看看是否可以在 REPL 中重現問題,然後結束 REPL。
如果您無法重現問題,請在 ClojureScript 簽出樹狀結構中發出此命令
git bisect good
或者,如果您能夠重現問題
git bisect bad
如果二分查找完成,git
將指出某個提交雜湊「是第一個錯誤提交」。複製 JIRA 的所有文字。
否則,重新啟動 REPL 並重複上述步驟,直到完成為止。
完成後,您可以發出此命令來還原您的 ClojureScript 簽出
git bisect reset