javascript - 如何处理“ RangeError:超出最大调用堆栈大小”
问题描述
我正在开发一个express
API。它在我的计算机上运行良好,但在我的服务器上我遇到以下异常:
RangeError:超出最大调用堆栈大小
该代码包括读取约 400000 行的文件。然后它在每一行上循环,并且最多有一个深度为 15 的递归调用。我读过setImmediate
,process.nextTick
但我不确定如何或在哪里使用它们。
知道发生了什么以及如何解决它吗?
我已经尝试更改堆栈大小(更改为我的文件的大小),但它并没有解决这个问题。我想这更像是一个结构性问题。
示例代码
const bigProcess = () => {
const processLine = (line) => {
let l = line && line.charAt(0);
if (l) {
if (line.length > 1) {
processLine(line.substring(1));
} else {
console.log('line processed.');
}
}
};
var data = fs.readFileSync("myfile.txt", "utf-8");
var lines = data.toString().split("\r\n");
for (var line of lines) {
processLine(line);
}
};
这是我的完整输出:
RangeError:在 processLine (/home/sinsedrix/myapi/bigprocess.js:7:30) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 处的 String.charAt () 超出了最大调用堆栈大小processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14 :17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess .js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix /myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess. js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/ myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/主页/sinsedrix/myapi/bigprocess.js:14:17)17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess. js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17)17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess. js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17) 在 processLine (/home/sinsedrix/myapi/bigprocess.js:14:17)
解决方案
推荐阅读
- java - 在黄瓜中重新运行失败场景时出错
- reactjs - 模块 scss 和符号类选择器不起作用
- kubernetes - Kubernetes 无法连接到服务器:x509:证书由未知机构签名
- javascript - 拖放文件时,accept 属性将被忽略,我该如何防止这种情况?
- c++ - CPP 代码在读取 IO 时随机冻结
- firebase - 如何分析哪些集合获得最多的阅读量?
- apache-spark - Spark 访问 Parquet 表顶部的视图
- python - 有两个 tkinter 窗口,脚本在一个主循环之后不执行
- postgresql - 从 Kubernetes 访问外部数据库
- django - Django 上下文未呈现