升级Node.js 20.9.0后,创建React应用触发EventEmitter内存泄漏警告
解决Node.js 20.9.0创建React应用时的EventEmitter内存泄漏警告
这个警告是Node.js 20.9.0版本的已知兼容性问题,和依赖下载过程中TLS Socket的监听器数量溢出有关,下面是几个可行的解决办法:
临时提升监听器上限(快速生效)
在创建项目时通过环境变量临时调整Node.js的监听器上限:- Windows cmd:
set NODE_MAX_LISTENERS=100 && npx create-react-app my-app - Windows PowerShell:
$env:NODE_MAX_LISTENERS=100; npx create-react-app my-app - macOS/Linux:
NODE_MAX_LISTENERS=100 npx create-react-app my-app
已经创建好的项目,可以修改
package.json里的启动脚本,比如:"scripts": { "start": "NODE_MAX_LISTENERS=100 react-scripts start" }- Windows cmd:
切换Node.js版本
该问题在Node.js 20.8.1或20.10.0及以上版本中已修复,用nvm快速切换版本:# 安装并切换到20.8.1 nvm install 20.8.1 nvm use 20.8.1换用其他包管理器
npm的依赖下载逻辑可能触发这个问题,换成yarn或pnpm试试:# 使用yarn创建项目 yarn create react-app my-app # 使用pnpm创建项目 pnpm create vite@latest my-app --template react清理全局冲突包
全局安装的旧版create-react-app或vite可能和Node.js 20.9.0不兼容,先卸载全局包再重新调用:npm uninstall -g create-react-app npm uninstall -g vite # 调用最新版包创建项目 npx create-react-app@latest my-app npx vite@latest my-app --template react
注:这个警告只是提示潜在内存泄漏,实际不会影响项目运行,若不介意可以忽略。
内容的提问来源于stack exchange,提问作者Psych
相关产品推荐
相关产品推荐

