You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js内存泄漏问题求助:安装包时持续触发MaxListenersExceededWarning

解决npm安装包时触发TLSSocket EventEmitter内存泄漏警告的方案

针对安装任意Node.js包时持续遇到的MaxListenersExceededWarning(提示TLSSocket添加了11个close监听器),即使升级到Node.js 20.9.0 LTS仍未解决的问题,可尝试以下方案:

  • 临时提升监听器限制(快速缓解)
    在执行npm安装命令前添加环境变量,临时提高EventEmitter的最大监听器数:

    NODE_OPTIONS="--max-event-listeners=100" npm install [你的包名]
    

    也可以全局设置这个环境变量,避免每次输入:

    # Linux/macOS
    export NODE_OPTIONS="--max-event-listeners=100"
    # Windows PowerShell
    $env:NODE_OPTIONS="--max-event-listeners=100"
    
  • 更新npm到最新版本
    即使Node.js是最新LTS,npm可能存在版本滞后的情况,运行以下命令更新npm:

    npm install -g npm@latest
    
  • 清除npm缓存
    缓存损坏可能引发异常行为,强制清除缓存后重新尝试安装:

    npm cache clean --force
    
  • 检查网络代理/工具
    TLSSocket相关警告常与网络代理有关,尝试关闭VPN、公司代理或本地抓包工具(如Charles、Fiddler)后,再执行npm安装操作,看警告是否消失。

  • 排查全局npm包兼容性
    全局安装的某些包可能与当前Node.js版本不兼容,触发监听器泄漏警告:

    1. 查看全局包列表:
      npm list -g --depth=0
      
    2. 尝试临时禁用全局包相关脚本:
      npm install [你的包名] --ignore-scripts --no-optional
      
    3. 逐个更新或卸载可疑的全局包,排查问题来源。
  • 修改Node.js默认监听器限制(不推荐)
    若以上方法均无效,可修改Node.js的EventEmitter默认配置,但此操作会影响所有Node.js程序:
    找到Node.js安装目录下的lib/events.js文件,修改defaultMaxListeners的值(默认是10),比如改为100:

    EventEmitter.defaultMaxListeners = 100;
    

内容的提问来源于stack exchange,提问作者Paw-1 Poudel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:25:23