美文网首页
(node) warning: possible EventEm

(node) warning: possible EventEm

作者: 舒小妮儿 | 来源:发表于2018-07-07 00:01 被阅读41次

    今天项目中遇到个问题:
    在页面点击悬浮分享按钮时,有时候响应事件,有时候不可以,一开始我还怀疑我画布绘制问题导致按钮不可用,然而,注掉代码后,问题依旧时有时无,与canvas并无干系。

    开启调试,我发现控制台有报错信息:

    (node) warning: possible EventEmitter memory leak detected. 16 listeners added. Use emitter.setMaxListeners() to increase limit.

    从报错信息来看,应该是说事件注册器达到上限导致内存泄露,需要调用 emitter.setMaxListeners( ) 方法增加上限。

    因为对于Node.js并不熟悉,随手google一下关键词EventEmitter,这篇文章 微信小程序 Node.js (基础四) 事件循环& (基础五) EventEmitter 介绍的挺细致的,感谢作者的分享,帮助我更好的理解Node.js里的事件处理和循环。

    作者在 微信小程序 Node.js (基础四) 事件循环& (基础五) EventEmitter 一文提到:
    setMaxListeners(n) 默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。

    而且在我的报错信息里有提到,我需要增加监听事件的默认限制,所以我在出错的页面js文件中增加里如下代码:

    onShow: function () {
        const emitter = EventEmitter()//获取eventEmitter对象
        emitter.setMaxListeners(100)//指定一个最大监听数量
        //emitter.setMaxListeners(0)//或者关闭最大监听阈值
    }
    

    当然,也可以全局修改监听数,也就是在app.js中去处理。我目前只在当前页面遇到这个报错和问题,所以就简单的在该页面局部处理,也许下次再出现此问题,我就该考虑在app.js全局处理了~

    相关文章

      网友评论

          本文标题:(node) warning: possible EventEm

          本文链接:https://www.haomeiwen.com/subject/mspbuftx.html