created: 2018-12-16T03:05:36.000Z
JavaScript heap out of memory になんとなくで対処する場合とchromeでデバッグする場合
例えばwebpackの処理で以下のエラーが出た場合の話
$ serverless deploy --function App --stage prod
Serverless: Bundling with Webpack...
...中略...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [~/.nodebrew/node/v8.10.0/bin/node]
2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [~/.nodebrew/node/v8.10.0/bin/node]
...中略...
12: v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [~/.nodebrew/node/v8.10.0/bin/node]
13: 0x373ff9d842fd
なんとなくで対処すればいい場合
メッセージ通りにheapが足りていないのでオプションを足せば逃げられる
$ node --max_old_space_size=2048 serverless deploy
原因を調べたい場合
きちんと原因を探ろうとする場合は以下のコマンドで調べられる
$ node --max_old_space_size=512 --expose-gc --inspect serverless deploy
叩くとURLが表示されるので、それをchromeで開くとデバッガが起動する。ステップ実行しながらどの辺の処理でヒープが膨らんでるかを見ることが出来たり「これ落ちる寸前です」というところで止めてくれてスゴイ便利
ちなみに今回は googleapis のソースマップを生成するところであれになって死んでいました