gitbook安装错误:TypeError: cb.apply is not a function

提纲
1、问题描述
2、解决办法



1 问题描述

最近在写一本关于rust的书,使用到了gitbook,所以就探索了一下gitbook,但是在刚暗转过了gitbook-cli后,验证gitbook版本号的命令就出错了,具体错误如下:

#首先要安装node,这是第一步,必须要做,否则其他步骤没法做,因为gitbook是基于node写出来的一个软件。

#第二步,安装gitbook-cli项目,使用npm安装,gitbook-cli项目就是gitbook
npm install gitbook-cli -g

#第三步,验证gitbook是否安装成功,这一步如果正常输出gitbook-cli的版本和gitbook的版本,那么就说明gitbook安装成功了,如果没有正常输出,反倒还报错了,说明gitbook没有安装成功
gitbook -V 

#我在这一步恰巧就是没有成功,而是输出了错误信息。
$ gitbook -V
CLI version: 2.3.2
Installing GitBook 3.2.3
C:\Users\91613\AppData\Roaming\npm\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 E:\software\nvm-noinstall\v22.12.0\node_modules\gitbook-cli\node_modules\npm\node_modules\graceful-fs\polyfills.js:287:18
    at FSReqCallback.oncomplete (node:fs:209:5)


2、报错解决办法

看错误消息就是说polyfills.js这个文件中代码出错了。从网上查询了一些资料,发现解决办法有2个:
1)出现这个错误,是因为node版本过高,与gitbook不兼容,那么解决方法就是降低node版本,或者用nvm管理多个版本的node,讲gitbook安装在低版本的node中。
我恰好就是用nvm管理多版本node的,所以我可以使用这个方法:

nvm install 10.14.1
nvm use 10.14.1

这样安装了node的10.14.1,使用这个版本,然后在这个版本node下安装gitbook,就不会出错了。
我本来可以使用这个方法解决问题,但是我没用这个方法,因为我日常最常使用的node版本是22.12.0,我不想切换来切换去,我就想只用一个node版本。



2)第二个方法,就是不换node版本,而是直接解决这个问题。
打开polyfills.js文件,在287行看到一个函数statFix函数,然后这个函数在62、63、64等3行中被调用了,那么注释掉62、63、64这3行,就彻底解决这个错误问题了。
于是,我就这么做了。注释后,保存,重新执行gitbook -V发现果然不再报错。

$ gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3


参考资料:
1、https://download.csdn.net/blog/column/6680504/112121742



posted @ 2025-06-21 10:28  zhangzl419  阅读(77)  评论(0)    收藏  举报