Редактировать
Я думаю, что проблема связана с тем, что сборщику не хватает памяти:
transform[stderr]: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
Временное решение
Я нашел достойное решение, вместо запуска react-native start
я запускаю следующее, что позволяет увеличить лимит памяти:
node --max-old-space-size=8192 node_modules/react-native/local-cli/cli.js start
Мне все еще очень любопытно, почему выделенной по умолчанию памяти недостаточно для обработки моих файлов.
Подробное описание проблемы
Когда я запускаю react-native start
, объединение всегда зависает в одном и том же месте:
Loading dependency graph, done.
BUNDLE [ios, dev] ./index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░ 98.6% (842/848)
Примерно через 30 секунд клиент (мой телефон или симулятор, оба на ios) падает и в основном говорит, что не может подключиться к серверу разработки. Процесс связки никогда не падает и остается на этом этапе даже после сбоя клиента.
Есть ли способ найти, почему это происходит? Я пытался добавить --verbose
в свою команду, но это не дало результата. Я немного сбит с толку, так как это работало несколько часов назад, и это внезапно произошло, хотя я не устанавливал ничего нового. Я уже пробовал многие, такие как перезагрузка/очистка кеша/удаление и переустановка модулей моего узла/….
На всякий случай, это как-то связано с моей установкой:
$ react-native info
React Native Environment Info:
System:
OS: macOS 10.14
CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
Memory: 2.50 GB / 16.00 GB
Shell: 4.4.12 - /usr/local/bin/bash
Binaries:
Node: 8.9.4 - /usr/local/bin/node
Yarn: 1.3.2 - /usr/local/bin/yarn
npm: 6.4.1 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
IDEs:
Xcode: 10.1/10B61 - /usr/bin/xcodebuild
npmPackages:
react: ^16.8 => 16.8.6
react-native: ^0.59.2 => 0.59.2
npmGlobalPackages:
create-react-native-app: 1.0.0
react-native-cli: 2.0.1
react-native-git-upgrade: 0.2.7
У меня также есть очень большие файлы .js
(> 9M), я не знаю, может ли это быть причиной этого.
Иногда упаковщик падает со следующим выводом:
transform[stdout]:
transform[stdout]: <--- Last few GCs --->
transform[stdout]:
transform[stdout]: [6180:0x102801000] 945611 ms: Mark-sweep 1410.8 (1546.2) -> 1410.8 (1530.2) MB, 5646.2 / 0.0 ms (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 5646 ms) last resort GC in old space requested
transform[stdout]: [6180:0x102801000] 951930 ms: Mark-sweep 1410.8 (1530.2) -> 1410.8 (1530.2) MB, 6318.4 / 0.0 ms last resort GC in old space requested
transform[stdout]:
transform[stdout]:
transform[stdout]: <--- JS stacktrace --->
transform[stdout]:
transform[stdout]: ==== JS stack trace =========================================
transform[stdout]:
transform[stdout]: Security context: 0xf7793325ee1 <JSObject>
transform[stdout]: 1: visit [/node_modules/@react-native-community/cli/node_modules/@babel/traverse/lib/path/context.js:~75] [pc=0x2945f0d9fcbf](this=0xf7789523021 <NodePath map = 0xf773909f479>)
transform[stdout]: 2: visitQueue [/node_modules/@react-native-community/cli/node_modules/@babel/traverse/lib/context.js:~96] [pc=0x2945f0d9d88d](this=0xf77b18e35c1 <...
transform[stdout]:
transform[stderr]: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
transform[stderr]: 1: node::Abort() [/usr/local/bin/node]
transform[stderr]: 2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [/usr/local/bin/node]
transform[stderr]: 3:
transform[stderr]: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
transform[stderr]: 4:
transform[stderr]: v8::internal::Factory::NewStruct(v8::internal::InstanceType) [/usr/local/bin/node]
transform[stderr]: 5:
transform[stderr]: v8::internal::Factory::NewTuple3(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) [/usr/local/bin/node]
transform[stderr]: 6:
transform[stderr]: v8::internal::LoadIC::UpdateCaches(v8::internal::LookupIterator*) [/usr/local/bin/node]
transform[stderr]: 7: v8::internal::LoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>) [/usr/local/bin/node]
transform[stderr]: 8:
transform[stderr]: v8::internal::KeyedLoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) [/usr/local/bin/node]
transform[stderr]: 9:
transform[stderr]: v8::internal::Runtime_KeyedLoadIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
transform[stderr]: 10: 0x2945f0b8463d