Angular9 + Ionic5
のプロジェクトで、これまでng build
でビルドができていたのに、
どこかのタイミングで突然エラーがでてビルドができなくなりました。
$ npm run build
> foobar-app@0.0.1 build /Users/me/foobar-app
> ng build
Generating ES5 bundles for differential loading...
An unhandled exception occurred: Call retries were exceeded
See "/private/var/folders/dq/krc2_m3n1l7dz267pz551gd00000gn/T/ng-4UuNHR/angular-errors.log" for further details.
ログを見てみてもあまり状況がわかりません…。
[error] Error: Call retries were exceeded
at ChildProcessWorker.initialize (/Users/me/foobar-app/node_modules/jest-worker/build/workers/ChildProcessWorker.js:230:21)
at ChildProcessWorker._onExit (/Users/me/foobar-app/node_modules/jest-worker/build/workers/ChildProcessWorker.js:307:12)
at ChildProcess.emit (events.js:198:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
StackOverFlowにて解決策を発見
ここにたどり着きました。
どうやら使用するメモリ量を増やしてあげれば回避できるようです。
ビルド時にnode --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build
と実行すればよいようです。
手元ではpackage.json
にかかれているコマンドを修正しました。
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build",
まとめ
プロジェクトで使用するコードが大きくなってくると発生するのでしょうか。
あまり大きいアプリケーションコードだとダウンロードにも時間が掛かってしまうので、
メモリにやさしくビルドができるようにも、余計なコードを含めないように、
コンパクトな実装をしていきたいですね。