React Native执行yarn install时遇JavaScript堆内存溢出错误求助
React Native Yarn Install 内存溢出及Yarn Berry安装应用失败问题
问题背景
运行React Native应用,此前一切正常,执行yarn install时触发JavaScript堆内存溢出错误:
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory ----- Native stack trace ----- 1: 0x1001a7eb8 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/Users/riktam/.nvm/versions/node/v20.18.0/bin/node] 2: 0x10033662c v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/Users/riktam/.nvm/versions/node/v20.18.0/bin/node] ...(省略中间栈内容) zsh: abort yarn install
升级Yarn到Berry版本后,依赖可成功安装,但无法正常安装应用。
解决方案
一、解决原版Yarn内存溢出问题
原版Yarn(Classic)处理大量依赖时易触发Node.js内存限制,可通过以下方式解决:
临时提升Node.js内存上限
执行安装时直接指定内存参数:NODE_OPTIONS="--max-old-space-size=8192" yarn install8192代表分配8GB内存,可根据机器配置调整(如4096=4GB)。
全局配置内存参数
若不想每次手动加参数,可将配置写入shell环境变量:- zsh用户编辑
~/.zshrc,添加:export NODE_OPTIONS="--max-old-space-size=8192" - bash用户编辑
~/.bash_profile或~/.bashrc,添加同样内容。
执行source ~/.zshrc(对应自己的shell配置文件)使配置生效。
- zsh用户编辑
清理缓存后重装
先清理Yarn缓存减少内存占用:yarn cache clean rm -rf node_modules yarn install
二、解决Yarn Berry安装应用失败问题
Yarn Berry采用了不同的依赖管理机制,需调整配置适配React Native:
启用Node Modules兼容性
Yarn Berry默认不生成node_modules文件夹,而React Native部分工具链依赖该目录,需开启兼容模式:yarn config set nodeLinker node-modules yarn install检查版本兼容性
旧版React Native对Yarn Berry支持有限,建议使用0.68+版本。若版本过低,可考虑升级React Native,或退回Yarn Classic。修复Metro配置
修改metro.config.js确保Metro能正确识别Yarn Berry的依赖路径:const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const config = {}; module.exports = mergeConfig(getDefaultConfig(__dirname), config);清理缓存重新构建
yarn cache clean rm -rf node_modules rm -rf ios/Pods android/app/build yarn install # iOS平台 cd ios && pod install && cd .. # Android平台 ./gradlew clean
内容的提问来源于stack exchange,提问作者bmchaitu
相关产品推荐
相关产品推荐

