在构建Microsoft CodePush时接收内存不足的javascript堆

在构建Microsoft CodePush时接收内存不足的javascript堆,javascript,node.js,react-native,visual-studio-app-center,code-push,Javascript,Node.js,React Native,Visual Studio App Center,Code Push,我只在构建CodePush版本时收到此错误 $appcenter codepush release-react -a APPNAME.com/APPNAME-ios -d Production --mandatory --output-dir ./build -t 1.x.x; transform[stderr]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap

我只在构建CodePush版本时收到此错误

$appcenter codepush release-react -a APPNAME.com/APPNAME-ios -d Production --mandatory --output-dir ./build -t 1.x.x;

transform[stderr]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
transform[stderr]: 
transform[stderr]: Writing Node.js report to file: report.20191010.093411.22661.001.json
transform[stderr]: Node.js report completed
transform[stderr]:  1: 0x100062df2 node::Abort() [/usr/local/bin/node]
transform[stderr]:  2: 0x1000634eb node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
transform[stderr]:  3: 0x1001aeda7 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
transform[stderr]:  4: 0x1001aed44 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
transform[stderr]:  5: 0x1005b5bd2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
transform[stderr]:  6: 0x1005b8103 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
transform[stderr]:  7: 0x1005b4638 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
transform[stderr]:  8: 0x1005b27f5 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
transform[stderr]:  9: 0x1005bf09c v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
transform[stderr]: 10: 0x1005bf11f v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
transform[stderr]: 11: 0x10058e314 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
transform[stderr]: 12: 0x100840c54 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
transform[stderr]: 13: 0x23da4894fc7d
如何告诉AppCenter使用
max\u old\u space\u size=8192

在Android上,将以下内容添加到项目的build.gradle文件中:

project.ext.react = [
nodeExecutableAndArgs: ["node", "--max_old_space_size=8192"]
]
在iOS上,在Xcode中,选择目标并转到构建阶段选项卡, 在“本机代码和图像”部分中,将标志添加到 shell脚本:

export NODE_BINARY="'node --max_old_space_size=8192'
../node_modules/react-native/packager/react-native-xcode.sh"

希望这有帮助

讨论了类似的问题。您可以尝试运行此react native bundle命令:

node --expose-gc --max_old_space_size=8192 ./node_modules/react-native/local-cli/cli.js bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'

将这些添加到脚本中,然后按顺序运行它们

"setup-fix-memory-limit": "npm install -g increase-memory-limit",
"fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit",
将第二个脚本中的数字更改为所需的数字

npm run setup-fix-memory-limit
npm run fix-memory-limit

另外,请确保查看是否可以用其他方法解决此问题,可能一些不正确的导入会显著增加捆绑包的大小,请使用捆绑包分析器查看构建中的内容是否应该是它们的,或者是否可以修剪任何内容。

在Bitrise上运行codepush时,我遇到了同样的问题。通过在
code\u PUSH\u NODE\u ARGS
环境变量上导出它来解决

export CODE_PUSH_NODE_ARGS='--max_old_space_size=8192'

appcenter codepush release-react ...

正如我所看到的,您的导出命令只有一个破折号。也许可以尝试导出节点\u选项=--max\u old\u space\u size=8192或
NODE\u OPTIONS=“--max old space size=8192”
看看是否有效?这仅适用于xcode。当我运行
appcenter
CLI时,我无法在那里设置节点内存。在运行
代码推送释放反应
命令之前,请尝试运行
export node\u memory=8192