變數函式庫讓你提供一個在不同環境下不同的值,而不是硬編碼一個只在一個工作區裡正確的值。 Fabric 接受變數參考時,會在使用該值前先解析該參考。
當 Fabric 無法解析參考時,它不會替換值。 它會回報一個解析狀態,說明參考中哪一部分失敗了。 本文將說明每種狀態及其應對方式。
參考資料如何被解析
解析參考分階段進行,任何階段失敗都會停止後續。 Fabric 會做以下工作:
- 讀取參照並檢查其格式是否正確。
- 找到變數函式庫的參考名稱,並確認你能讀取它。
- 找到函式庫的主動值集合。
- 找到該值集合內的變數。
- 檢查變數的值型別是否與參考所要求的類型相符。
- 如果值指向另一個項目或連結,這些細節也會被解決。
你看到的狀態會告訴你哪些階段失敗了,通常這足以在不檢查整個鏈條的情況下找出修正問題。
參考解析誤差
這些錯誤代表參考本身、變數庫或變數無法解析。
| 訊息 | 這是什麼意思? | 修正方式 |
|---|---|---|
| 參考格式無效 | 參考資料格式不正確。 | 修正參考語法。 |
| 缺少變數程式庫參照 | 參考文獻沒有標示變數函式庫。 | 提供包含圖書館的完整參考資料。 |
| 變數庫參考不明確 | 有多個變數函式庫與參考相符。 | 讓參考資料更具體,讓它對應到同一個函式庫。 |
| 不允許指定類型 | 此參照會內嵌指定型別,但此參照不支援這樣做。 | 移除內嵌型別指定。 |
| 找不到變數函式庫 | 圖書館不存在,或者你沒有權限閱讀。 | 請查閱參考資料,並確認你對圖書館的使用權限。 |
| 變數函式庫損壞 | 程式庫無法讀取。 | 這不是自助式的。 如果繼續發生問題,請連絡支援人員。 |
| 未找到主動值集 | 函式庫中設定的主動值集並不存在。 | 設定一個存在於函式庫中的主動值集合。 |
| 變數定義無效 | 函式庫中的一個或多個變數定義是無效的。 | 修正函式庫中的變數定義。 |
| 變數覆寫無效 | 一個或多個覆寫值無效。 | 修正覆寫值。 |
| 找不到變數 | 函式庫已解析,但沒有該名稱的變數。 | 確認變數名稱。 變數被重新命名是常見的原因。 |
| 變數類型不匹配 | 變數的值型別不是參考所要求的類型。 | 改變請求的型別或變數值。 |
如果你看到的是一般性的 無法解析參照 訊息,而不是上述其中一則訊息,那麼就無法將該失敗歸因於某個特定階段。 重試一次,如果問題持續存在,就將其視為服務端錯誤,而非參考本身的問題。
參考項目錯誤
這些錯誤表示參考已解析為某個值,但該值所指向的項目或連接無法解析。 參考是正確的,所以修正目標而不是參考。
| 訊息 | 這是什麼意思? | 修正方式 |
|---|---|---|
| 未找到參考項目 | 價值所指的物品根本不存在。 | 確認該項目仍然存在,且其值指向正確的項目。 |
| 拒絕存取參考項目 | 這個項目存在,但你沒有讀取權限。 | 請求該項目的讀取權限。 |
| 未找到參考連結或存取被拒絕 | 連結不存在,或者你無法讀懂。 | 檢查連線和你的存取權限。 |
| 發生問題 | 該項目無法解決,原因也未明確。 | 重試。 如果問題持續,就當作服務端錯誤處理。 |
Considerations
其中有幾項在你碰到之前值得先了解:
- 權限失敗和物件遺失在某些情況下也會以相同方式回報。 「找不到變數函式庫」和「找不到引用連線或存取被拒絕」都涵蓋了物件不存在,且你無法看到它,因為 Fabric 不會確認你無法讀取的物件存在。 在你判斷物品已經消失之前,先檢查你的存取權限。
- 你這邊可解析的參照,對其他人而言不一定也能解析。 解析取決於觸發它的人所擁有的權限,因此,在編寫時可正常運作的參照,之後若由不同身分執行同一工作流程時,可能就會失敗。
- 重新命名變數會破壞對該變數的引用。 參考資料依名稱顯示,因此重新命名時會以 「未找到變數 」形式出現,而非在重新命名時的警告。