When executing any gitbook
command in the terminal, the following error is thrown:
/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)
NOTE: This does not happen in node version v12.18.2 and is still happening in version v14.6.0
The gitbook-cli
seems to not be working right now, failing because of their outdated graceful-fs
dependency.
Any ideas how to fix this?
The issue was originally a problem inside graceful-fs
but they solved it in this commit I believe.
The problem is that GitBook is still using outdated dependencies that pull in versions of graceful-fs without the fix.
The solution I found was to update graceful-fs
inside gitbook like this:
If you've installed gitbook globally by doing npm install -g gitbook-cli
then your path in macOS should be something like /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules
. Your path may differ depending on your OS or installation location.
Run this:
cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/
npm install graceful-fs@latest --save
Then try installing GitBook. It should have fixed the installing problem.
The last solution was great , but when I use npm install graceful-fs@latest --save
in the right place and then rerun gitbook build
, I got the following error:
_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
And ... guess what , when I change the version of graceful-fs to 4.2.0
, it all worked ...
TL;DR
Why not switch to honkit (Fork of GitBook)?
The "why" for switching:
I knew this is not the answer to the question, but I would like to mention that the repository of gitbook has been deprecated 3 years ago, this makes it a bad choice for usage and especially security.
So I searched for the alternatives, and I found mdBook and honkit , turned out that honkit has good compatibility with gitbook, maybe switch to honkit is a better choice instead of fixing a 3 years old software with some hacking.
Just replace the crashing file polyfills.js
with this one: https://raw.githubusercontent.com/isaacs/node-graceful-fs/168bdb8f0bb3174e8499d4bc5878deead4172c39/polyfills.js
This works like a charm in Node.js v16.13.0.
Full instructions for WSL2
Install nvm curl -o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash close WSL bash shell and re-open nvm install --lts
check versions and install node --version npm --version
install gitbook-cli npm install -g gitbook-cli
Any gitbook command gives error 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
Then cd to your git document folder gitbook install gitbook serve
You can update package-lock.json
> gitbook-cli
> npm
> graceful-fs
to something like:
"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
},
and then use npm ci
This worked for me:
npm install graceful-fs@latest --save
Then re-run:
npm install -g gitbook-cli
UPDATE ===== Another option would be to use NVM and install node v12.8.2.
Use this https://github.com/nvm-sh/nvm .
for those who are very busy and have no time to debug:
npm install gitbook-cli@2.1.2 --global
vim ~/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js
, Replace all confirm: true
toconfirm: false
gitbook serve
then everything goes well.
My Env:
I changed the Node version to 12
with nvm and works fine.
Reinstall the graceful-fs
and gitbook-cli
packages to fix the issue,
Open a terminal on the project root folder.
Execute the following commands in your terminal.
npm install graceful-fs@latest --save npm install -g gitbook-cli
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.