如何解决gitbook-cli出现的Maximum call stack size exceeded错误?
Fixing "RangeError: Maximum call stack size exceeded" When Building GitBook PDF on Ubuntu 18 Server
我之前在Ubuntu 18 Server上用几乎一模一样的环境(Node v8.10.0、npm 3.5.2、GitBook CLI 2.3.2 + GitBook 3.2.3)构建PDF时,也碰到了这个栈溢出的错误,折腾了好一阵才找到解决思路,分享几个可行的办法给你:
检查并优化书籍结构
先看看你的SUMMARY.md里有没有嵌套层级过深的章节,或者存在循环引用的链接(比如章节A链接到章节B,B又反向链接回A)。这类情况会让GitBook的渲染逻辑陷入无限递归,最终触发栈溢出。可以试着把深层目录拆平一些,或者清理掉不必要的循环链接。升级GitBook相关依赖
你当前用的GitBook和npm版本都比较老旧,可能存在已知的递归栈溢出bug。可以尝试:# 卸载旧版gitbook-cli npm uninstall -g gitbook-cli # 安装最新稳定版gitbook-cli npm install -g gitbook-cli@latest # 重新安装GitBook依赖 gitbook install另外也建议升级npm到较新的版本,避免旧版本的依赖管理问题:
npm install -g npm@latest禁用第三方插件排查问题
有些GitBook第三方插件(尤其是处理目录、链接的插件)可能存在不良的递归逻辑。可以先把book.json里的插件列表全部注释掉,再尝试构建PDF。如果构建成功了,再逐个启用插件,找出导致问题的那个插件,要么替换要么移除它。手动增加Node.js栈内存限制
如果上面的方法都不管用,可以直接给Node进程分配更大的栈空间,绕过这个错误:node --stack-size=10000 $(which gitbook) pdf ./ ../algo.pdf --debug这里的
10000是栈大小的数值,你可以根据实际情况调整,数值越大栈空间越充足,但也别设得太夸张,避免占用过多系统资源。
我当时是通过简化目录结构加上升级npm解决的问题,你可以根据自己的书籍情况逐个尝试这些方案。
内容的提问来源于stack exchange,提问作者linrongbin
相关产品推荐
相关产品推荐

