基于CentOS环境安装gitbook过程

1,328 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

Gitbook可以用来制作在线电子文档,操作起来非常方便。配合git可以搭建一个企业用的再线文档工具。开发者只需要通过Typora等工具将编辑好的marcdown格式的文档上传到git即可。gitbook安装过程如下:

1.node.js安装

安装gitbook首先需要安装node.js环境。node.js下载地址:nodejs.org/en/download…

image.png 选择对应的版本上传到服务器。 node-v16.16.0-linux-x64.tar.xz 注意:如果node版本过高会导致gitbook失败,请使用如下版本。 node-v12.22.12-linux-x64.tar.xz 服务器上操作如下:

[root@mv161p120 software]# ls
node-v16.16.0-linux-x64.tar.xz 
# xz解压为tar格式
[root@mv161p120 software]# xz -d /opt/software/node-v12.22.12-linux-x64.tar.xz 
[root@mv161p120 software]# ls
node-v16.16.0-linux-x64.tar 
[root@mv161p120 software]# cd /opt/
# tar 解压
[root@mv161p120 opt]# tar -xvf /opt/software/node-v12.22.12-linux-x64.tar 
[root@mv161p120 opt]# ls
node-v16.16.0-linux-x64 software

解压之后存在/opt目录中。 建立软链接:

[root@mv161p120 opt]# ln -s /opt/node-v12.22.12-linux-x64 /opt/node

修改/etc/profile文件:

[root@mv161p120 opt]# vim /etc/profile

在文件莫问添加如下2行内容:

export NODE_HOME=/opt/node
export PATH=$PATH:$NODE_HOME/bin

配置环境变量后,执行该命令使环境变量生效:

[root@mv161p120 opt]# source /etc/profile

之后执行npm命令:

[root@mv161p120 lib]# node -v
12.22.12
[root@mv161p120 lib]# npm -v
8.11.0

说明node环境安装成功。 npm升级:

[root@mv161p120 opt]# npm install -g npm@8.15.1
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

changed 35 packages, and audited 202 packages in 6s

11 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
[root@mv161p120 opt]# npm -version
8.15.1

将npm升级到8.15.1

2.其他依赖软件

通过yum升级系统软件:

[root@mv161p120 opt]# yum -y install gcc openssl-devel gcc-c++ compat-gcc-34 compat-gcc-34-c++

3. 安装gitbook

安装过程:

[root@mv161p120 node]# npm install -g gitbook-cli
/opt/node-v12.22.12-linux-x64/bin/gitbook -> /opt/node-v12.22.12-linux-x64/lib/node_modules/gitbook-cli/bin/gitbook.js
+ gitbook-cli@2.3.2
added 578 packages from 672 contributors in 38.573s
[root@mv161p120 node]# gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3

# 之后执行gitbook -V 自动安装gitbook

4.遇到的错误

4.1 gitbook安装顺序问题

对于gitbook,通过npm安装,不要先安装gitbook。这样会导致gitbook-cli无法安装。 正确的顺序是先安装gitbook-cli,之后执行gitbook 命令的时候会自动安装gitbook。 如果先安装gitbook,之后再安装gitbook-cli会出现如下错误:

[root@mv161p120 opt]# npm install -g gitbook-cli
npm ERR! code EEXIST
npm ERR! path /opt/node-v16.16.0-linux-x64/bin/gitbook
npm ERR! EEXIST: file already exists
npm ERR! File exists: /opt/node-v16.16.0-linux-x64/bin/gitbook
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-08-03T09_02_07_857Z-debug-0.log
[root@mv161p120 opt]# 

执行gitbook -v的时候会提示:

[root@mv161p120 bin]# gitbook -V
You need to install "gitbook-cli" to have access to the gitbook command anywhere on your system.
If you've installed this package globally, you need to uninstall it.
>> Run "npm uninstall -g gitbook" then "npm install -g gitbook-cli"

需要先将gitbook uninstall之后再安装gitbook-cli。

4.2 版本过高提升cb.apply问题

在执行了gitbook -V命令之后会自动安装gitbook,但是由于node的版本过高,这个地方会导致出现问题:

[root@mv161p120 bin]# gitbook -V
CLI version: 2.3.2
Installing GitBook 3.2.3
/opt/node-v16.16.0-linux-x64/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 /opt/node-v16.16.0-linux-x64/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (node:fs:199:5)
[root@mv161p120 bin]# 

解决这个问题的办法很简单:

[root@mv161p120 bin]# vim /opt/node-v16.16.0-linux-x64/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js

vim这个文件,然后将出错的地方注释即可:

image.png 将62-64行进行注释。 之后再次执行即可成功。

4.3 gitbook init出现错误

gitbook init出现错误

[root@mv161p120 frontend-technical-manual]# gitbook init
warn: no summary file in this book 
info: create SUMMARY.md 

TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Promise
[root@mv161p120 frontend-technical-manual]# 

出现这个错误的原因是node的版本过高。需要降级,降级到了稳定版本 12即可。