Получение кучи JavaScript из памяти при сборке Microsoft CodePush - PullRequest
3 голосов
/ 08 октября 2019

Я получаю эту ошибку только при создании выпуска 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_old_space_size=8192?

Ответы [ 3 ]

0 голосов
/ 14 октября 2019

Подобный вопрос обсуждается здесь . Вы можете попытаться запустить эту команду активного пакета:

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'
0 голосов
/ 16 октября 2019

Добавьте их в свои сценарии и затем запустите их по порядку.

"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

Также убедитесь, чтопосмотрите, может ли это быть решено другим способом, возможно, некоторые некорректные операции импорта резко увеличивают размер вашего пакета, используйте анализатор пакетов, чтобы увидеть, должно ли быть то, что находится в сборке, или их можно обрезать.

0 голосов
/ 10 октября 2019

это иллюстрирует решение вашей проблемы.

На Android добавьте следующее в файл build.gradle проекта:

project.ext.react = [
nodeExecutableAndArgs: ["node", "--max_old_space_size=8192"]
]

На iOS, в Xcode выберите свою цель и перейдите на вкладку Build Phases, в разделе Bundle React Native code и images добавьте флаг в скрипт оболочки:

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

Надеюсь, это поможет!

...