GitbookIO / gitbook-cli

GitBook's command line interface

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gitbook build stopped to work in node 12.18.3

mikyjpeg opened this issue · comments

Since the new version of node, when running gitbook build it fails with the following error:

Installing GitBook 3.2.3

/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)

The command "gitbook install" failed and exited with 1 during .

The command still works fine when using 12.18.2

Yes, I have the same problem. My node version is v14.6.0

I have the same problem.

I believe the issue was resolved by isaacs/node-graceful-fs@168bdb8, but gitbook-cli has outdated dependencies which pull in versions of graceful-fs without the fix.

I have the same problem, too.

please help.

node version is v14.6.0.

In light of
https://github.com/GitbookIO/gitbook#%EF%B8%8F-deprecation-warning
We probably need to fork gitbook-cli to maintain it. Who wants to do it?

@greyltc That sounds good. You can unify one person to fork and then maintain it through the open source community

@rjbeers Thank you very much. You're right.

  1. if you run gitbook serve has error and your gitbook-cli is installed globally.
    Find the NPM global installation directory and into dir node_modules/gitbook-cli/node_modules/npm/node_modules Execute the order

npm install graceful-fs@latest --save

  1. if you run gitbook install has error
    Go to user directory and into dir .gitbook/versions/3.2.3/node_modules/npm Execute the order

npm install graceful-fs@latest --save

@greyltc I noticed a new fork -- greyltc@2b39017 . Thanks! Are you planning to publish your fork as an npm package? Let me know if I can be any help. Our team depends on gitbook-cli, so I'd love to find a path forward.

@zzaacchh
I rely on gitbook-cli as well and it's very unfortunate and frustrating that upstream support for it has been dropped (but hey, you can't always have your cake and eat it too!) and I would love a path forward too.
I would plan to publish my fork so that the community can have a working gitbook-cli, but I can't get it to work.

The NPM dependancy system seems to be a real nightmare. Any help is welcome.

Thanks, @greyltc . I'm planning to hire someone on upwork to help fork and repackage. Any chance you'd be up for pitching in on the cost for that?

The stuff I use gitbook-cli for is free, open and, non-revenue-generating, so unfortunately I don't have much other than a little of my time to offer. And that's not so valuble here because I don't know shit about javascript!

I was reached out by @zzaacchh. I’m happy to support this project for free! Forked.

I believe the issue was resolved by isaacs/node-graceful-fs@168bdb8, but gitbook-cli has outdated dependencies which pull in versions of graceful-fs without the fix.

yeah it helps !!! my node version is v14.5.0
thanks !!

I ended up to use nvm to use nodejs 10 lts. I updated dependency of graceful-fs globally and locally but it won't help.

I had the same issue but using different package. It was mentioned before that selective dependency resolution can help with that:

"resolutions": {
  "**/graceful-fs": "^4.2.4"
}

I am installing my deps with yarn and this fixed the issue. I think it's a good idea to double check if the version installed in node_modules is actually 4.2.4 - maybe a lock file or cache keeps installing other version.

I make my own fork, if you are interested, just use npm i -g gengjiawen/gitbook-cli should work.

I also develop an github action for generate books, please refer to: https://github.com/gengjiawen/koajs-design-note.

Still +1

I had same problem.
I think seems to be dependancy problem with latest version for graceful-fs.
Change the graceful-fs version solves the problem.

My environment is :

  • OS : macOS Big Sur
  • node : v12.22.1
  • npm : v6.14.12
  • gitbook-cli : gitbook-cli@2.3.2
  • graceful-fs : 4.1.4

try this :

$ npm i -g gitbook-cli
$ cd /usr/local/lib/node_modules/gitbook-cli
$ npm i graceful-fs@4.1.4 --save
$ cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm
$ npm i graceful-fs@4.1.4 --save
$ cd {your gitbook directory}
$ gitbook init
$ gitbook serve

info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 1 pages
info: found 0 asset files
info: >> generation finished with success in 0.2s !

Starting server ...
Serving book on http://localhost:4000

I had same problem.
I think seems to be dependancy problem with latest version for graceful-fs.
Change the graceful-fs version solves the problem.

My environment is :

  • OS : macOS Big Sur
  • node : v12.22.1
  • npm : v6.14.12
  • gitbook-cli : gitbook-cli@2.3.2
  • graceful-fs : 4.1.4

try this :

$ npm i -g gitbook-cli
$ cd /usr/local/lib/node_modules/gitbook-cli
$ npm i graceful-fs@4.1.4 --save
$ cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm
$ npm i graceful-fs@4.1.4 --save
$ cd {your gitbook directory}
$ gitbook init
$ gitbook serve

info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 1 pages
info: found 0 asset files
info: >> generation finished with success in 0.2s !
Starting server ...
Serving book on http://localhost:4000

It works for me :) Thanks 😋 @jinifor

  • npm : v7.18.1
  • node : v16.4.0

I had same problem.
I think seems to be dependancy problem with latest version for graceful-fs.
Change the graceful-fs version solves the problem.

My environment is :

  • OS : macOS Big Sur
  • node : v12.22.1
  • npm : v6.14.12
  • gitbook-cli : gitbook-cli@2.3.2
  • graceful-fs : 4.1.4

try this :

$ npm i -g gitbook-cli
$ cd /usr/local/lib/node_modules/gitbook-cli
$ npm i graceful-fs@4.1.4 --save
$ cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm
$ npm i graceful-fs@4.1.4 --save
$ cd {your gitbook directory}
$ gitbook init
$ gitbook serve

info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 1 pages
info: found 0 asset files
info: >> generation finished with success in 0.2s !
Starting server ...
Serving book on http://localhost:4000

It works for me too !!! Thanks @jinifor

Workaround for me in node:v14.16.0

$ yarn global add gitbook-cli@2.2.0
$ gitbook fetch 3.2.3

My node version is v14.0.0
"gitbook install" can success

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.

These are the detailed steps to fix the problem (temporary, just to execute gitbook install and gitbook build):

Install gitbook-cli globally (if not already installed)

npm -g install gitbook-cli

Go to your NPM global modules directory (find its location by typing npm -g list)

Linux: cd /usr/lib/node_modules
Windows: cd %AppData%/npm/node_modules

Go to the graceful-fs folder

cd gitbook-cli/node_modules/npm/node_modules/graceful-fs

Delete the old incompatible file polyfills.js, which causes TypeError: cb.apply is not a function

rm polyfills.js

Download a fixed newer version of polyfills.js from GitHub

wget https://raw.githubusercontent.com/isaacs/node-graceful-fs/168bdb8f0bb3174e8499d4bc5878deead4172c39/polyfills.js

I had same problem. I think seems to be dependancy problem with latest version for graceful-fs. Change the graceful-fs version solves the problem.

My environment is :

  • OS : macOS Big Sur
  • node : v12.22.1
  • npm : v6.14.12
  • gitbook-cli : gitbook-cli@2.3.2
  • graceful-fs : 4.1.4

try this :

$ npm i -g gitbook-cli $ cd /usr/local/lib/node_modules/gitbook-cli $ npm i graceful-fs@4.1.4 --save $ cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm $ npm i graceful-fs@4.1.4 --save $ cd {your gitbook directory} $ gitbook init $ gitbook serve

info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 1 pages
info: found 0 asset files
info: >> generation finished with success in 0.2s !
Starting server ...
Serving book on http://localhost:4000

Great!! It works for me.

#110 (comment)
This works for me too. I'm using M1 mac + homebrew and changed the PATH, so I need to make the following changes.

npm i -g gitbook-cli
cd /opt/homebrew/lib/node_modules/gitbook-cli
npm i graceful-fs@4.1.4 --save
cd /opt/homebrew/lib/node_modules/gitbook-cli/node_modules/npm
npm i graceful-fs@4.1.4 --save
cd {your gitbook directory}
gitbook init
gitbook serve

I had same problem. I think seems to be dependancy problem with latest version for graceful-fs. Change the graceful-fs version solves the problem.

My environment is :

  • OS : macOS Big Sur
  • node : v12.22.1
  • npm : v6.14.12
  • gitbook-cli : gitbook-cli@2.3.2
  • graceful-fs : 4.1.4

try this :

$ npm i -g gitbook-cli $ cd /usr/local/lib/node_modules/gitbook-cli $ npm i graceful-fs@4.1.4 --save $ cd /usr/local/lib/node_modules/gitbook-cli/node_modules/npm $ npm i graceful-fs@4.1.4 --save $ cd {your gitbook directory} $ gitbook init $ gitbook serve

info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 1 pages
info: found 0 asset files
info: >> generation finished with success in 0.2s !
Starting server ...
Serving book on http://localhost:4000

thank you! it is working...

These are the detailed steps to fix the problem (temporary, just to execute gitbook install and gitbook build):

Install gitbook-cli globally (if not already installed)

npm -g install gitbook-cli

Go to your NPM global modules directory (find its location by typing npm -g list)

Linux: cd /usr/lib/node_modules Windows: cd %AppData%/npm/node_modules

Go to the graceful-fs folder

cd gitbook-cli/node_modules/npm/node_modules/graceful-fs

Delete the old incompatible file polyfills.js, which causes TypeError: cb.apply is not a function

rm polyfills.js

Download a fixed newer version of polyfills.js from GitHub

wget https://raw.githubusercontent.com/isaacs/node-graceful-fs/168bdb8f0bb3174e8499d4bc5878deead4172c39/polyfills.js

that's helpful! I finally manage to install gitbook with node v16.14.1

node -v 16.14.2 npm -v 8.5.0
node -v 17.9.0 npm -v 8.7.0

cd C:\Users\admin\AppData\Roaming\npm\node_modules\gitbook-cli\node_modules\npm\node_modules
I tried to install graceful-fs@latest(graceful-fs@4.2.10), but when I finished, the Gitbook was gone. Finally, graceful-fs@4.2.0 was installed to fix the problem

Find the global installation directory for NPM: (prefix)
C:\Users\admin\AppData\Roaming\npm\node_modules\gitbook-cli\node_modules\npm\node_modules>npm config ls
; "builtin" config from C:\Users\admin\AppData\Roaming\npm\node_modules\npm\npmrc

prefix = "C:\Users\admin\AppData\Roaming\npm"

; "user" config from C:\Users\admin.npmrc

registry = "https://registry.npm.taobao.org/"

; node bin location = C:\Program Files\nodejs\node.exe
; node version = v17.9.0
; npm local prefix = C:\Users\admin\AppData\Roaming\npm\node_modules\gitbook-cli\node_modules\npm
; npm version = 8.7.0
; cwd = C:\Users\admin\AppData\Roaming\npm\node_modules\gitbook-cli\node_modules\npm\node_modules
; HOME = C:\Users\admin
; Run npm config ls -l to show all defaults.

To anyone still having this issue, I have setup an devcontainer environment with gitbook configured and working fine. The gitbook fix is based on @jinifor contribution above #110 (comment)

devcontainer-gitbook

Hope it can help someone!

I have the same problem.
my pc develop enviroment

macOS Monterey v12.6
$ node -v 
v16.17.0
$ npm -v
8.15.0
$ yarn -v
1.22.19
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]

#110 (comment)
I replaced the polyfills.js as per the instructions in the comments, but the result was the same

I use GitHub Actions script to build and deploy my gitbook-based books. This is the script. It works successfully in the last 3 years: https://github.com/SoftUni/Programming-Basics-Book-JS-EN/blob/master/.github/workflows/gitbook-deploy.yml

It seems this project hasn't got any update since 2017, it's time to move on something else, some alternatives:

I have the same problem, too.

please help.

node version is v18.14.0.

This problem still exists.
Any workaround or solutions instead of usin NodeJS <=12.18.2?