有時候更新完文章,會莫名導致NexT的LocalSearsh有問題,
像是上圖一樣的卡住轉圈圈狀態也沒辦法解掉,這篇紀錄如何解決。
之前有時偶爾會更新時發現這種問題,
都會回去markdown檔案中檢視看看哪裡是否誤用非法字元,
然後把文章修改一下,就也沒追根究柢通常就是把出錯那段文字改掉XD
直到上次因為JavaScript30系列把所有文章內容都加上了列表站的連結,
導致搜尋一直有問題,才開始去翻找原因
Step1. 檢查搜尋機制
由於使用的是localSearch,
會透過編譯完後public裡面的search.xml
作為搜尋主體,
有了搜尋主體後就要先去驗證格式的正確性,但我跟XML格式並不熟,
內容量太大也沒辦法肉眼去驗證,就找了線上驗證的網站,
把search.xml
的內容全部丟下去驗證後跳出了這個錯誤。
線上找會有很多,我是用google找到的第一個https://www.xmlvalidation.com/
Step2. Unicode: 0x8
得到了這樣子的錯誤訊息後,就馬上拿去問google啦~
也發現從標題中有滿多人是在跟md檔案有關係的互動時產生的問題,
點了其中一篇GitHub中關於EverNote的發問,
裡面有人回應這個錯誤是因為產生了一個backspace的字符,順著查下去!
Step3. 顯示看不到的backspace字符
我是使用VSCODE,開啟方式是到設定中打開renderControlCharacters
打開之後就可以看到兇手了!
Step4. 搜尋並替換
經過查詢,backspace的unicode是\u0008
,
而VSCODE的檔案搜尋正則表達式使用的是Rust要輸入\x{0008}
,
但是我查了很久總是搜不出我要的檔案,我也不知道哪裡出錯,
就這樣查了很久很久才發現,直接把那個超小的bs
框起來複製丟上搜尋框就好!!!
雖然搜尋框內的bs肉眼看不到,但是實際上他會去進行搜尋,
接著就一個一個替換吧(一個一個替換是因為我只替換我自己產出的檔案,避免影響其他東西)。
Step5. 重編譯一次測試看看吧
當完成修改後,重新測試理論上搜尋框就修好了~~
找原因的途中也是學了不少啊:D