Gitbook是个挺好用的Node.js应用,最近在用它翻译一本书,可以用Markdown编译,挺简洁的,网络发布也很不错。然鹅,着实遇到了一些bug,翻了代码才解决,希望给后面一样踩了坑的小伙伴一点帮助T^T
这个错误是这样的:
1 | /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:299 |
这个错误是在Generate的时候发生的,我也不知道这个cb.apply是干嘛的,我以前也没碰上,可能是最近用hexo之前升级了Node.js……吧,不管那么多,顺藤摸代码,按错误提示的路径找到polyfills.js
(这个路径在你的电脑上有可能是隐藏的,总之显示隐藏文件就能看到),打开,看到第299行这里,发现这里写了个函数statFix()
:
1 | function statFix (orig) { |
在里面定义了一个callback
,用到了cb.apply
:
1 | if (cb) cb.apply(this, arguments) |
搜索statFix()
函数,发现在polyfills.js
的第65行起:
1 | fs.stat = statFix(fs.stat) |
emm,看statFix()
里的注释信息
1 | // Older versions of Node erroneously returned signed integers for |
似乎是为了解决旧版本返回uid+gid时候的数据类型的问题,然而我是更新了之后才出的问题😑,所以这个函数应该用不上了。
所以,将65行起的三行都注释掉:
1 | // fs.stat = statFix(fs.stat) |
搞定!再次运行Gitbook生成作品,没问题了!✿✿ヽ(°▽°)ノ✿