天天看點

hexo 中文文章渲染錯誤的bug解決

這實際上是在很長一段時間内困擾我的一個 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