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

macOS上安装/创建Node.js项目时出现MaxListenersExceededWarning警告

解决Node.js MaxListenersExceededWarning(TLSSocket)警告

警告本质

这个警告是Node.js检测到单个EventEmitter实例(这里是TLSSocket)上添加的监听器数量超过了默认阈值(10个),但不一定意味着真的存在内存泄漏。在你的场景里,这大概率是npm内部处理包下载时的网络请求逻辑导致的,和你自己的代码或配置无关。

常见原因

  • npm在批量下载依赖包时,会建立多个TLSSocket连接到npm registry,当网络波动、依赖树复杂或镜像源处理逻辑特殊时,内部依赖库(如pacote、node-fetch)可能会给同一个TLSSocket实例重复添加close监听器,触发阈值检测。
  • Node.js v20+版本对事件监听器的检测逻辑更严格,之前版本可能没有触发这个警告,升级后才显现出来。

解决/处理方案

  • 临时抑制警告:执行npm/npx命令时添加环境变量,直接屏蔽该警告:
    NODE_NO_WARNINGS=1 npm install
    # 或者npx命令
    NODE_NO_WARNINGS=1 npx create-next-app@latest
    
  • 全局提高监听器上限:修改shell配置文件(/.zshrc或/.bash_profile),添加以下内容后重启终端,全局提高Node.js的默认监听器阈值:
    export NODE_MAX_LISTENERS=100
    
  • 检查并切换npm源:如果使用了第三方镜像源,执行npm config list查看当前registry,尝试切换回官方源或其他稳定镜像:
    # 切换到官方源
    npm config set registry https://registry.npmjs.org/
    
  • 清除npm缓存:缓存损坏可能导致重复请求,增加监听器数量,执行以下命令清除缓存:
    npm cache clean --force
    

额外说明

既然目前项目安装和运行都没有异常,这个警告只是Node.js的预防性提示,不会影响功能。如果之后出现性能下降、请求失败等实际问题,再进一步排查,否则可以选择忽略或用上述方法屏蔽。

内容的提问来源于stack exchange,提问作者Parsa Sabet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:55:08