简 述: 欲用 gitbook 来开启人生第一本书,结果安装、使用时候卡住了。。。这里记录一下;没想新的版本里面有坑。

[TOC]


本文初发于 “偕臧的小站“,同步转载于此。


结论

LinuxMac 版本上,用 GitBook 3.2.3 版本, 只能对应使用 Node = v10.23.0 LTS 版本;使用 v12 、V14 版本会失败。 我在 UOS20Mac 10.14.6 上面都逐一尝试过了。


前言

依次按照如下顺序安装:

  1. nvm :用来安装、管理切换 nodejs 的版本
  2. nodejs:运行所需要的环境
  3. npm: 用来安装 gitbook-cli(自动安装最佳 gitbook 版本)
  4. cnpm: 换源,使用 cnpm 替代 npm。
  5. 使用 gitbook 命令,预览和发布到 gitbook.com / github page

在 Linux 和 Mac 上做了如下尝试的。


Linux 安装 gitbook

Node v14.15.1

执行 gitbook init 会报错如下:

☁  book  gitbook init
Installing GitBook 3.2.3
/home/xmuli/.config/nvm/versions/node/v14.15.1/lib/node_modules/gitbook-cli/node_modules/_npm@5.1.0@npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function
    at /home/xmuli/.config/nvm/versions/node/v14.15.1/lib/node_modules/gitbook-cli/node_modules/_npm@5.1.0@npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (fs.js:184:5)

Node = v12.20.0

执行 gitbook init 或者 gitbook serve 中一步会报错如同 Node v14.15.1


Node = v10.23

执行 gitbook init 成功,执行 gitbook serve 成功,可以使用;

虽然会卡很久(此时已经替换了 npm为淘宝源,采用的 cnpm 安装 gitbook),但是最后会成功。


Mac 安装 gitbook (尝试 node 版本)

如下都是安装 gitbook 3.2.3 版本尝试执行 gitbook initgit serve 看是否会报错;

Node v14.15.1

执行 gitbook init 会报错如下:

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

Node v12.20.0

执行 gitbook init 成功,执行 gitbook serve 会报错如下;

Live reload server started on port: 35729
Press CTRL+C to quit ...

/Users/xmuli/.nvm/versions/node/v12.20.0/lib/node_modules/gitbook-cli/node_modules/_npm@5.1.0@npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function
    at /Users/xmuli/.nvm/versions/node/v12.20.0/lib/node_modules/gitbook-cli/node_modules/_npm@5.1.0@npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (fs.js:169:5)

Node v10.23.0

执行 gitbook init 成功,执行 gitbook serve 成功,可以使用;


其它

Gitbook serve 报错

后来在 Linux 中 使用 gitbook 3.2.3 + nodejs=v10.23.0 成功;当执行 gitbook serve 时候,报错如下(但是在 Mac 中却没有此问题):

Error: ENOENT: no such file or directory, stat

解决方案

这是 gitbook 3.2.3 的一个 bug;找到 ~\.gitbook\versions\3.2.3\lib\output\website\copyPluginAssets.js 路径,

将所有的 confirm :true 都替换为 confirm :false;成功


尝试降低/升级 gitbook

想着坚持使用 Node v14.15.1 版本; 更改为尝试 使用低版本的 gitbook,也试了高版本的 预览版本,但是执行 gitbook fetch x.x.x 时候会失败。此方式放弃。