一、 gitbook -v command not found
  1. 背景
    node 安装ok node -v 显示版本号
    npm 安装ok npm -v 也显示版本号
    本人安装npm install gitbook-cli -g 这个是ok的, 但是 gitbook -v不行
  2. gitbook 常见问题解决 gitbook: command not found node、if (cb) cb.apply(this, arguments)、gitbook导出html无法跳转_git

  3. 从上面的语句得出是环境变量的问题,既然node与npm 都能出现版本。于是本人猜测可能是全局变量问题
  4. 解决办法
    本人按node安装在[D:/node]下

    修改默认的全局目录
npm config set prefix D:/node/nodejs/node_global/ //全局包目录,就在node安装目录新建了个nodejs文件夹存放
npm config set cache D:/ndoe/nodejs/node_cache/  //全局包缓存目录,就在node安装目录新建了个nodejs文件夹存放

配置环境变量

PATH: D:\node\nodejs\node_global\;

二、 使用gitbook时解决if (cb) cb.apply(this, arguments)错误

2021-05-22 gitbook serve 运行又报错啦

gitbook 常见问题解决 gitbook: command not found node、if (cb) cb.apply(this, arguments)、gitbook导出html无法跳转_npm_02

D:\node\nodejs\node_global\node_modules\gitbook-cli\node_modules\npm\node_modules\graceful-fs\polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

查看了一下polyfills.js内容,报错行数287行,代码如下:

function statFix (orig) {
  if (!orig) return orig
  // Older versions of Node erroneously returned signed integers for
  // uid + gid.
  return function (target, cb) {
    return orig.call(fs, target, function (er, stats) {
      if (!stats) return cb.apply(this, arguments)
      if (stats.uid < 0) stats.uid += 0x100000000
      if (stats.gid < 0) stats.gid += 0x100000000
      if (cb) cb.apply(this, arguments)
    })
  }
}

这段代码应该是修改旧版本的问题的,导致的报错,但是其实并不需要修复。我直接查看他的调用,发现了62-64行调用代码,直接注释:

//fs.stat = statFix(fs.stat)
//fs.fstat = statFix(fs.fstat)
//fs.lstat = statFix(fs.lstat)

三、gitbook导出的本地html无法跳转问题解决方法

在_book文件夹中找到gitbook->theme.js文件
在代码中搜索 if(m)for(n.handler&&if(m)改成if(false),再重新打开index.html即可