事情开始于我想搭建一个gitbook服务在自己的机器上,方便我编辑文档时预览,在centos7上,使用的工具是docker
先安装必要的工具:
yum install -y npm
安装gitbook:
npm install -g gitbook-cli
照着这个作者提供的方法安装了nodejs CentOS7下部署GitBook - 云+社区 - 腾讯云
具体步骤记录:
下载 wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
tar -xJf node-v12.16.1-linux-x64.tar.xz -C /usr/local/lib/ cd /usr/local/lib mv node-v12.16.1-linux-x64/ nodejs
修改环境变量
export PATH=/usr/local/lib/nodejs/bin:$PATH source /etc/profile
然后运行如下命令启动服务
docker run --rm -v "xxx/dir":/gitbook -p 4000:4000 billryan/gitbook:zh-hans gitbook serve
报错:
Error: Couldn't locate plugins "expandable-chapters", Run 'gitbook install' to install plugins from registry.
于是照着提示运行:
gitbook install
又又报错:
Installing GitBook 3.2.3
/usr/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 /usr/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
at FSReqCallback.oncomplete (node:fs:199:5)
一番google之后发现了这个解决办法:node.js - Gitbook-cli install error TypeError: cb.apply is not a function inside graceful-fs - Stack Overflow
由于我是centos7,需要找的目录和链接中提供的macOS目录不太一样,于是用find / -name gitbook-cli大法找到了相应的目录“/usr/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/”,打开它,执行:
cd /usr/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/; npm install graceful-fs@4.2.4 --save
再回到原来文档所在的目录“xxx/dir”,再执行 gitbook install,执行成功
再启动服务就可以愉快地访问了
docker run --rm -v "xxx/dir":/gitbook -p 4000:4000 billryan/gitbook:zh-hans gitbook serve



