關於寫作那些事之github告訴我構建失敗,然後呢?

雪之夢技術驛站發表於2019-04-12

The page build failed for the master branch with the following error

問題描述

faq-github-build-failed-issue01.png

看到這封郵件,一臉懵逼,本地執行 gitbook 服務是正常渲染的,控制檯並沒有任何報錯,誰知道推送到 github 時就報錯了!

登入到 github 網站檢視網站原始碼已經同步過來了,但是靜態網站無法同步,本地實在找不到任何報錯資訊,這讓我如何是好?

再看 github 反饋用的郵件中說道,如有問題可以回覆郵件(If you have any questions you can contact us by replying to this email.).

然後死馬當活馬醫,嘗試闡釋了我的問題,請求幫助定位錯誤日誌,沒想到當天下午就收到 github 的回覆郵件,提供瞭解決辦法!

faq-github-build-failed-issue01-reply.png

問題是由於 Liquid Warning: Liquid syntax error (line 334) 錯誤,然而我確定這部分程式碼是沒有任何問題的,因為這是我改造 gitbook-plugin-tbfed-pagefooter 外掛時的一段程式碼,反覆確認後發現並沒有複製貼上出錯啊!

var moment = require('moment');
module.exports = {
  book: {
    assets: './assets',
    css: [
      'footer.css'
    ],
  },
  hooks: {
    'page:before': function(page) {
      var _label = '最後更新時間: ',
          _format = 'YYYY-MM-DD',
          _copy = 'powered by snowdreams1006'
      if(this.options.pluginsConfig['tbfed-pagefooter']) {
        _label = this.options.pluginsConfig['tbfed-pagefooter']['modify_label'] || _label;
        _format = this.options.pluginsConfig['tbfed-pagefooter']['modify_format'] || _format;

        var _c = this.options.pluginsConfig['tbfed-pagefooter']['copyright'];
        _copy = _c ? _c + ' all right reserved,' + _copy : _copy;
      }
      var _copy = '<span class="copyright">'+_copy+'</span>';
      var str = ' \n\n<footer class="page-footer">' + _copy +
        '<span class="footer-modification">' +
        _label +
        '\n{{file.mtime | date("' + _format +
        '")}}\n</span></footer>';

      str += '\n\n<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">'+
      '\n\n<script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>'+
      '\n\n<div id="gitalk-container"></div>'+
      '\n\n<script src="https://snowdreams1006.github.io/gitalk-config.js"></script>';

      page.content = page.content + str;
      return page;
    }
  },
  filters: {
    date: function(d, format) {
      return moment(d).format(format)
    }
  }
};
複製程式碼

來源於 gitbook-plugin-tbfed-pagefooter 外掛的 index.js 檔案,這裡為了相容 gitalk 外掛而整合了相關程式碼,詳情請參考 gitalk 評論外掛

解決方案

根據郵件回覆,定位到出錯程式碼片段,真的沒發現有什麼問題啊?

faq-github-build-failed-issue01-blame.png

既然已經確定不是我的問題,那很可能就是 github 的問題了,郵件中推薦我使用 Jekyll 進行構建網站,不不不!

既然已經選擇 gitbook 搭建靜態網站,那就沒必要再使用 Jekyll ,我可不想那麼麻煩!

If you are not using Jekyll you can disable it by including a .nojekyll file in the root of your repository.

所以我不妨試試新增 .nojekyll 檔案,說不定就好使了呢!

$ touch .nojekyll
$ git add .nojekyll
$ git commit -m "add .nojekyll"
$ git push
複製程式碼

天不負我!竟然真的好使了,再也沒有收到 github 的報錯郵件反饋了,原始碼和網站都正常更新了!

faq-github-build-failed-issue01-resolved.png

小結

據我推測,可能是 github 誤認為我的網站是使用 Jekyll 工具構建的,實際上,是使用 gitbook 構建的!

因此,增加 .nojekyll 檔案禁用 Jekyll 工具,自然不會再受相關語法限制而報錯了.

所以,遇到問題時,不僅要多思考,更應該尋求官方人員的幫助,即使不回你,你也要嘗試一下!

相關文章