如何修復在使用GitBook時出現的「cb.apply is not a function」錯誤
我經常使用 GitBook,這是一個小型的 Node.js 軟體,用於從一組 Markdown 檔案生成電子書。
我用它來製作我的電子書。今天在運行 gitbook pdf .
生成 PDF 時,我遇到了一個非常奇怪的錯誤:
1 | ➜ ebook git:(master) ✗ gitbook pdf . |
cb.apply is not a function
。這句話什麼意思?更重要的是,為什麼我現在出現這個錯誤?我最近沒有更新 gitbook 套件,也沒有…哦,我記得我更新了我運行的 Node.js 版本。但是我不知道為什麼這可能是問題所在。也許是吧。
不管怎樣…這個錯誤來自 /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js
文件。這是 graceful-js
npm 套件,一個「為內建的 Node.js fs
模塊提供各種改進的替代方案」,每周安裝超過 3300 萬次。
其中一個改進似乎破壞了我的工作流程,就是今天!
我沒有太多時間去找出為什麼我的 Node.js 版本會導致這個我沒有創建的應用程序和這個庫出現問題。
我打開了 /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js
文件,這就是錯誤的來源。
這是引起問題的函數:
1 | function statFix (orig) { |
這個函數似乎是為舊版本的 Node.js 修復的…對於我來說應該是不需要的。
我看到它在同一個文件的第 62-64 行中被使用:
1 | fs.stat = statFix(fs.stat) |
我注釋掉了這些行:
1 | // fs.stat = statFix(fs.stat) |
然後一切正常運作了,我能夠再次運行 gitbook
命令並得到我想要的漂亮 PDF。
tags: [“GitBook”, “Node.js”, “npm”]