這實際上是在很長一段時間内困擾我的一個 bug,在
hexo s
本地檢視 markdown 文章後,會偶發性地出現部分文章渲染錯誤的情況,
就變成這個鬼樣子了:文章底部有一定的機率渲染不出文字,而且把底部的
div
都給吞了………
檢視源碼後發現是一大堆莫名其妙的亂碼,并且這種情況僅在打開本地伺服器後檢視的中文文章下出現。我一開始以為是自己主題的問題,于是更換了其它主題,發現問題依然存在。很長一段時間内沒有在網上找到解決方案,鑒于這個 bug 隻在本地伺服器下才會出現,是以我也就暫時沒管了(盡管很難受)。就這樣過了一年………
結果,今天竟然有意外的發現!我發在 v2ex 的求助帖有人回複了,層主說他也遇到了一樣的問題,建議我更新 hexo 的版本。我一想,确實很久沒更新了,也許是 hexo 的問題,更新之後說不定可以解決。不過,在我更新完版本,滿懷欣喜地檢視文章的時候,發現很多文章還是渲染出錯。
這時候我注意到一個問題,就是我使用的熱更新插件 hexo-browsersync 在一些文章下沒有熱更新的提示,而且這些文章恰好就是渲染錯誤的文章。于是我來到插件的 issue 下,看有沒有新的發現 —— 真的有。就是這篇 issue,大概浏覽了一遍,發現大家都有和我一樣的問題,不管是環境還是症狀,都一模一樣(流下了同病相憐的淚水)。
具體的原因,暫時還沒有特别明确的解釋,但 issue 裡有人說是檔案流傳輸過程中編碼出錯導緻的。正常情況下不使用熱更新插件還看不出這個錯誤,在使用之後就暴露這個問題了。按照文章底下的做法,最終完美解決,所有的文章都正常顯示了。
總結一下,如果你:
- 使用了 hexo-browsersync 插件
-
後檢查文章,發現渲染不正常hexo s
可以嘗試:
- 解除安裝 hexo-browsersync 插件。貌似新版的 hexo 已經支援熱更新了,是以不再需要這個插件了
- 保留插件,在 hexo 根目錄的
檔案中添加配置(黑魔法):config.yml
server:
compress: true
複制
完美解決!
參考:
https://github.com/hexojs/hexo-browsersync/issues/15
https://github.com/twoyao/beautiful-hexo/issues/6