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

20.8k views Asked by At

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?

10

There are 10 answers

8
Ariel Mirra On BEST ANSWER

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.

3
Windsting On

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.

0
Siddhesh B. Kukade On

@Chalist 's Solution also was not working for me. So, I did this :

  1. npm uninstall gitbook-cli -g
  2. nvm install 10
  3. nvm use 10
  4. npm install gitbook-cli -g

Now all gitbook commands like gitbook serve will work fine.

3
mythsman On

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 ...

0
Siwei On

for those who are very busy and have no time to debug:

  1. install an older version of gitbook:
 npm install [email protected] --global
  1. modify this file: vim ~/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js, Replace all confirm: true to
confirm: false
  1. gitbook serve

then everything goes well.

My Env:

  • ubuntu 20.04 LTS ( windows WSL)
  • node 16
0
AudioBubble On

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 [email protected] --save

Then cd to your git document folder gitbook install gitbook serve

0
Svetlin Nakov On

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.

0
Chalist On

I changed the Node version to 12 with nvm and works fine.

0
Yusuf Ganiyu On

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.

0
Hofi On

My working solution on macOS Sonoma 14.2.1 (23C71)

Testing

  • gitbook init
  • gitbook serve

This constellation is working now nicely