1. 程式人生 > 其它 >gitbook熱更新時報錯operation not permitted

gitbook熱更新時報錯operation not permitted

在使用gitbook寫東西的時候,當文件內容有更新的時候,會自動更新內容到頁面上,方便預覽。但是,存在一個bug,就是會神奇的崩潰掉

在使用gitbook寫東西的時候,當文件內容有更新的時候,會自動更新內容到頁面上,方便預覽。但是,存在一個bug,就是會神奇的崩潰掉,出現如下的錯誤提示:

Restart after change in file README.md

Stopping server
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: EPERM: operation not permitted, lstat 'F:\workspace\private-cloud-backup\gitbook-test\_book'

解決方案也很簡單,重新執行一下gitbook serve

命令即可。有時候每儲存一下,就會崩潰一下,這就有點煩了。

網上搜一下,有沒有現在的解決方案

遇到問題,首先問問百度谷歌,畢竟是面向搜尋引擎的開發人員嘛。

網上有大佬對這個事故,做了深入的分析,分析過程很詳細,我就不說了,重點引用一下結論:

windows 系統上啟動 gitbook 服務後,如果本地檔案發生更改,熱加會失敗.
如果啟動伺服器後立即刪除 _book 目錄,那麼之後再怎麼修改本地檔案都能順利重啟.
目前還沒有找到問題的根源,下一次將深入原始碼繼續探討到底是哪裡出問題導致 Windows 系統無法重啟.
雖然及時刪除 _book 目錄並不算是很好的解決方案,但至少 markdown 灰姑娘又能化妝成 html 小姐姐了呢!

有興趣的朋友可以閱讀一下原文 https://juejin.cn/post/6844903840332939277

雖然大佬分析的很詳細,但是也沒能從中找到一個簡單的可執行方案。

換種思路,解決問題

回過頭來,換一種思路再來考慮這個問題,我們使用gitbook是為了寫作,而gitbook serve只是為了讓我們可以隨時預覽自己的寫作結果。當出現問題時,我們的手工解決方案是重啟一即可,那我們能不能讓他崩潰時自動重啟呢?

關於自動重啟的方案,首先想到的是守護程序。關於守護程序,要麼自己寫一個,要麼網上找一個,感覺這都太了,不是我想要的。於是又瞭解了一下bat批處理指令碼能不能解決,你別說,還真可以:

::該指令碼為啟動gitbook本地伺服器,當服務崩潰時會自動重啟
@echo off
:rungitbook
call gitbook serve
@goto rungitbook

將以上程式碼,在文件目錄儲存為gitbook.serve.bat,然後雙擊執行。當gitbook serve崩潰時,會自動重新啟動。

至此,問題就算是解決了。

其它

常用命令

命令 說明
gitbook init 在當前目錄初始化gitbook目錄結構
gitbook build 將文件編譯為html檔案
gitbook serve 啟動gitbook服務

釋出到Github

釋出到Github只需要git push即可。這種方式只能將文件同步到Github上,我們還需要將編譯結果直接作為網頁釋出,這裡推薦使用gh-pages

使用gh-pages只是將指定目錄釋出到gh-pages分支,你首先需要在Github上建立相應倉庫。

安裝

gh-pages是一個nodejs包,首先你需要安裝nodejs環境。

然後,執行以下命令安裝gh-pages

npm install -g gh-pages

釋出到gh-pages

安裝好gh-pages後,就可以使用gh-pages將編譯結果釋出到Github上了。

gh-pages -d _book