錯誤
此分頁自 3.2.0 版(測試版)起全面重新設計。 在 3.1.2 版中,它只會列出編譯錯誤與重複的識別碼。
錯誤分頁會分析整個資料庫,並列出其程式碼中的錯誤與警告:欄位、觸發器、檢視的欄、列印報表、全域程式碼與「After Open」觸發器。分析由一個移植自 Ninox 分析器的分析器進行:它所回報的內容與 Ninox 的判斷一致。每一行都能直接帶您前往出問題的程式碼。
此分頁僅供管理員使用。它只顯示其圖示——一個警告三角形;滑鼠停在上面時會顯示其名稱,而紅色圓形標記會顯示目前顯示的診斷數量。
統計與篩選

標頭會顯示統計結果:「無錯誤」、「3 個錯誤」、「3 個錯誤,12 個警告」、「36 個警告」……
篩選按鈕會開啟顯示的診斷面板:每種診斷類型各有一個開關,分為兩組:錯誤與警告。每一行都會顯示該類型診斷在資料庫中的數量——即使該類型已被隱藏:您既能看到顯示的內容,也能看到隱藏了什麼。當有類型被隱藏時,按鈕會加以提示(「已隱藏 2 類」);全部顯示可將它們恢復。篩選設定由瀏覽器記住,並適用於所有資料庫。
回報的內容
錯誤會使程式碼無法運作:
| 篩選 | 回報的內容 |
|---|---|
| 編譯錯誤 | Ninox 拒絕的程式碼:公式無法執行。 |
| ID重複 | 同一表格中的多個欄位共用同一個內部識別碼(例如一個輸入欄位與一個視覺元素):參照會因此變得含糊不清。 |
| 分析器錯誤 | Ninext 的分析器找到、而 Ninox 並未回報的錯誤。 |
| 內嵌內容錯誤 | 原生區塊 #{ … }# 中的 JavaScript 語法錯誤。 |
警告標示的是能夠運作、但很可能不如您預期的程式碼:
| 篩選 | 回報的內容 |
|---|---|
| 分析器 | Ninox 的警告,以及格式錯誤的 NativeJS 註解(未知的型別、找不到的表格)。 |
| 伺服器上下文 | 在其執行位置無效的程式碼:像 alert() 或 openRecord() 這樣的介面函式,或原生區塊 #{ … }#,被放在表格觸發器(建立後、修改後)或 do as server 之中。在伺服器上,它們會被悄悄忽略。 |
| 過時的錯誤 | Ninox 仍在顯示、但公式本身沒有問題的錯誤(見下文)。 |
| 未解析的參照 | 讀取一個目標表格已不存在的參照欄位(表格已刪除、外部資料庫不存在):其值為「void」,任何以點號進行的穿透都會失敗。 |
| 嵌入內容 | 有型別的 JavaScript 區塊在所有或部分路徑上沒有傳回任何值;非同步區塊從未呼叫 callback;傳給 html() 的 HTML 不平衡(標籤從未關閉、孤立的結束標籤);CSS 的大括號不平衡,或其中有規則會被瀏覽器捨棄。 |
| 程式碼中的無用程式碼 | 以 var 或 let 宣告、之後卻從未讀取的變數。 |
| 未使用的全域函式 | 資料庫中沒有任何元素呼叫的全域函式。 |
| 未使用的公式 | 沒有任何程式碼參照的公式。 |
未使用的函式與公式只是刪除的候選項:以動態方式組成的呼叫,或從 JavaScript 發出的呼叫,都會逃過分析;而顯示在表單或檢視中的公式,即使沒有任何程式碼讀取它,也仍然有用。刪除前請先確認。
解讀一行

診斷依類別分組。每個類別的標題都帶有一個標記,顯示其數量:錯誤為紅色,警告為橘色。若有多個類別,它們會收合起來,點選標題即可展開該類別;只有一個類別時,則會直接展開顯示。
各類別以其篩選器的名稱命名,但以下幾個除外:
| 篩選器 | 清單中的類別 |
|---|---|
| 分析器錯誤 | Ninext 分析器發現的額外錯誤 |
| 分析器 | 分析器警告 |
| 伺服器上下文 | 脫離執行上下文的程式碼 |
| 過時的錯誤 | 過時的錯誤(公式沒有問題) |
| 內嵌內容錯誤與嵌入內容 | 單一類別內嵌的 JS / HTML / CSS,最多帶有兩個標記:一個代表其錯誤,一個代表其警告。 |
每一行會顯示:
- 以斜體顯示的訊息——錯誤為灰色,警告為琥珀色——後接出問題的程式碼片段;當兩個型別不相符時,會有一句話指出是哪兩個;
- 相關的元素,其呈現方式與欄位與公式中相同:型別圖示、依賴項標記、「Fx」、導覽路徑。
將滑鼠停在導覽路徑中的粗體部分(公式、觸發器或全域函式)上,會顯示程式碼,並在錯誤處加上底線。
前往程式碼
點選導覽路徑中的粗體部分:Ninext 會在正確的位置開啟編輯器。對全域程式碼而言,診斷會附屬於包含它的函式——「Global functions › 函式名稱」——而全域程式碼編輯器會開啟並定位到該函式。「After Open」觸發器也以相同的方式開啟。
在編輯模式(「Edit mode」)下,滑鼠停在某一行上時,其右側會出現一個紅色按鈕:若該行與欄位有關,它會在表單上選取該欄位;若是其他行,則會開啟程式碼編輯器。
下圖是在示範資料庫中,點選某行(與某欄位的公式有關)的粗體部分:Ninext 會開啟該表格的一筆記錄、該欄位的視窗,然後是大型公式編輯器,出問題的段落會加上底線;滑鼠停在上面即可看到訊息。導覽路徑的其他元素則會開啟各自的層級:點選欄位名稱會開啟記錄與欄位視窗,但不會開啟編輯器。

在背景進行的分析
分析以小批次進行,並隨時把控制權交還給瀏覽器:即使是大型資料庫,也不會有任何凍結。每次修改架構後,分析都會自動重新執行。沒有進度指示器:先前的清單會一直顯示,直到被新的清單取代。
過時的錯誤
Ninox 有時會在架構重新載入期間、架構尚未完整時編譯公式欄位,之後便不再重新編譯:該欄位會在整個工作階段中顯示錯誤,儘管其公式是正確的。Ninext 會自行重新編譯該公式;若錯誤並未出現,就會將其歸入過時的錯誤。
解決辦法:重新載入資料庫,或儲存對架構的任意修改。
在 Ninox 編輯器中輸入時
在 Ninox 的腳本編輯器(大型公式編輯器、欄位或表格的面板)中輸入時,錯誤與警告同樣會加上底線:
- 錯誤以紅色波浪線標示,警告以琥珀色點線標示;
- 滑鼠停在加底線的段落上時,會出現提示泡泡說明原因,並指出哪些型別不相符;
- 只有在 Ninext 能確定程式碼在哪個表格中執行時,才會加上底線;
- 自動完成清單優先:只要清單還在顯示,就不會開啟任何提示泡泡。
選取一個字詞時,它的其他出現位置都會醒目標示——在 Ninox 的編輯器、控制台,以及 Ninext 的程式碼區塊中皆然。滑鼠停在編輯器上時,右上角會出現兩個按鈕:格式化與在主控台中偵錯(參見控制台)。
表格檢視中殘留的欄
編譯錯誤可能來自仍在使用已刪除欄位的表格檢視欄。Ninox 不會回報任何問題,因為該欄位只是從架構中被移除了:這是殘留在檢視欄設定中的參照。
修正方法:
- 點選導覽路徑末端以粗體顯示的公式(「表格 › 檢視 › … › 公式」)。
- Ninext 會依序開啟該檢視、欄編輯器,然後是其公式編輯器。
- 先在公式編輯器中點選 OK,再於欄編輯器中點選一次。
儲存之後,Ninox 會重新整理檢視的設定,並移除指向不存在欄位的參照。該錯誤便會從 Ninext 中消失。
