簡體   English   中英

Gitbook-cli安裝報錯TypeError: cb.apply is not a function inside graceful-fs

[英]Gitbook-cli install error TypeError: cb.apply is not a function inside graceful-fs

在終端中執行任意gitbook命令時,拋出如下錯誤:

/home/travis/.nvm/versions/node/v12.18.3/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^
TypeError: cb.apply is not a function
    at /home/travis/.nvm/versions/node/v12.18.3/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (fs.js:169:5)

注意:這不會發生在節點版本 v12.18.2 中,並且仍然發生在版本 v14.6.0 中

gitbook-cli現在似乎無法正常工作,因為它們過時graceful-fs依賴性而失敗。

任何想法如何解決這一問題?

這個問題最初是graceful-fs內部的一個問題,但我相信他們在這個提交中解決了它。

問題是 GitBook 仍在使用過時的依賴項,這些依賴項在沒有修復的情況下引入了優雅的 fs 版本。

我找到的解決方案是像這樣更新 gitbook 中的graceful-fs

如果您通過執行npm install -g gitbook-cli全局npm install -g gitbook-cli那么您在 macOS 中的路徑應該類似於/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules 您的路徑可能因您的操作系統或安裝位置而異。

運行這個:

cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/
npm install graceful-fs@latest --save

然后嘗試安裝 GitBook。 它應該已經解決了安裝問題。

最后一個解決方案很棒,但是當我在正確的位置使用npm install graceful-fs@latest --save然后重新運行gitbook build ,出現以下錯誤:

_stream_readable.js:545
  switch (state.pipesCount) {
               ^
TypeError: Cannot read property 'pipesCount' of undefined
    at module.exports.Readable.pipe (_stream_readable.js:545:16)
    at module.exports.ZipArchiveOutputStream._smartStream (/node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:184:11)
    at module.exports.ZipArchiveOutputStream._appendStream (/node_modules/compress-commons/lib/archivers/zip/zip-archive-output-stream.js:96:20)
    at module.exports.ArchiveOutputStream.entry (/node_modules/compress-commons/lib/archivers/archive-output-stream.js:88:10)
    at module.exports.ZipStream.entry (/node_modules/zip-stream/index.js:138:49)
    at Zip.append (/node_modules/archiver/lib/plugins/zip.js:53:15)
    at Archiver._moduleAppend (/node_modules/archiver/lib/core.js:172:16)
    at Archiver._onQueueTask (/node_modules/archiver/lib/core.js:370:8)
    at /node_modules/async/dist/async.js:3879:9

而且……猜猜怎么着,當我change the version of graceful-fs to 4.2.0 ,一切都奏效了……

TL; 博士

為什么不切換到honkitGitBook 的Fork)?


切換的“為什么”:

我知道這不是問題的答案,但我想提一下,gitbook 的存儲庫在 3 年前已被棄用,這使其成為使用特別是安全性的糟糕選擇。

於是我尋找替代方案,我找到了mdBookhonkit ,結果證明honkit與 gitbook 有很好的兼容性,也許切換到honkit是更好的選擇,而不是用一些黑客來修復一個 3 歲的舊軟件。

只需用以下文件替換崩潰文件polyfills.js :https://raw.githubusercontent.com/isaacs/node-graceful-fs/168bdb8f0bb3174e8499d4bc5878deead4172c39/polyfills.js

這在 Node.js v16.13.0 中非常有用。

WSL2 的完整說明

安裝 nvm curl -o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash 關閉 WSL bash shell 並重新打開 nvm install --lts

檢查版本並安裝node --version npm --version

安裝 gitbook-cli npm install -g gitbook-cli

任何 gitbook 命令都會給出錯誤gitbook build TypeError: Cannot set property 'readableListening' of undefined for internal/streams/readable.js:864 state.readableListening = this.listenerCount('readable') > 0;

cd /home/<USER_NAME>/.nvm/versions/node/v14.17.1/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/ npm install graceful-fs@4.2.0 --save

然后cd到你的git文檔文件夾gitbook install gitbook serve

您可以將package-lock.json > gitbook-cli > npm > graceful-fs為:

  "graceful-fs": {
    "version": "4.2.8",
    "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
    "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
    "dev": true
  },

然后使用npm ci

這對我有用:

npm install graceful-fs@latest --save

然后重新運行:

npm install -g gitbook-cli

更新 ===== 另一種選擇是使用 NVM 並安裝節點 v12.8.2。

使用這個https://github.com/nvm-sh/nvm

對於那些很忙沒有時間調試的人:

  1. 安裝舊版本的 gitbook:
 npm install gitbook-cli@2.1.2 --global
  1. 修改這個文件: vim ~/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js ,全部替換confirm: true
confirm: false
  1. gitbook serve

然后一切順利。

我的環境:

  • ubuntu 20.04 LTS (windows WSL)
  • 節點 16

我使用 nvm 將 Node 版本更改為12 ,並且工作正常。

重新安裝graceful-fsgitbook-cli包來解決這個問題,

  • 在項目根文件夾上打開一個終端。

  • 在終端中執行以下命令。

     npm install graceful-fs@latest --save npm install -g gitbook-cli

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM