Maximum call stack size exceeded 问题出现原因是什么?
在开发过程中遇到一个问题 使用了 sequelize.js 开发一个A方法传的参数格式如下 原先代码 (传transaction 会造成 Maximum call stack size exceeded 错误)
/**
*@param options {Object}
* example: {
* device_id: '',
* login_id: '',
* login_type: '',
* game_id: '',
* player_id: ''}
* transaction: [Sequelize.transaction]
* @return {bluebird| Promise}
*/
function A(options){
}
改进后代码 不会报错,正常运行
/**
*@param options {Object}
* example: {
* device_id: '',
* login_id: '',
* login_type: '',
* game_id: '',
* player_id: '',}
* @param transaction {sequelize.Transaction}
* @return {bluebird| Promise}
*/
function A(options, transaction){
}
问题出现的云里雾里,同时解决的也云里雾里,请问各位大神,上面的改动为什么会有效,要是能讲一下原理,不胜感激
4 回复
没人回复,自己顶
首先这个问题表面上是调用栈超过阈值, 一般循环调用函数的时候会出现
找到问题了,,因为日志用winston 对于object 会递归打印字段,,,嵌套层数太多了,或者死循环什么的,,,,,
自引用或者循环引用了,绝对的,层数再多也不可能超过 call stack 的限制