ののいち の 1.2..3...

IT関連の技術情報をメインに、学んだことや感じたことを書いています。

npm run build --prod でメモリエラーが発生した

ionic で開発をしていて、

npm run build --prod

を実行したら、out of memory エラーが発生しました。

解消方法がわかったので、メモしておきます。

事象

npm run build --prod

を実行したら、以下のエラーが発生しました。

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x1000382c7 node::Abort() [/usr/local/bin/node]
 2: 0x100038498 node::FatalTryCatch::~FatalTryCatch() [/usr/local/bin/node]
 3: 0x10016deeb v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]

ネットで調べてみると、メモリを上げれば治るという情報が多く、 試してみるのですが、うまくいかず。

以下の対応で解消できたので、メモしておきます。

確認環境

  バージョン
webpack 3.11.0, 3.12.0
node 10.14.1
ionic cli 4.2.1
macOS 10.14.1

解消方法

追記

optimizeの処理が原因のようで、こちらのコマンドを実行して、 build-optimizerのバージョンを上げることでも解消できました。 こちらの方が、より良い解消方法かなと思いました。

npm install @angular-devkit/build-optimizer@0.6.8
npm install @ionic/app-scripts@3.1.11 ← こちらも念のため、再実行しました。

はじめに見つけた解決方法

webpack.config.js というファイルを作成し、以下の記載を行う

var useDefaultConfig = require('@ionic/app-scripts/config/webpack.config.js');
module.exports = function () {
  let defaultConfig = useDefaultConfig;
  defaultConfig["prod"] = defaultConfig["dev"];
    return defaultConfig;
};

packages.json に、descriptionの上あたりに、configの設定を追加  「./webpack.config.js」のパスを合わせるようにする

  "config": {
    "ionic_bundler": "webpack",
    "ionic_webpack": "./webpack.config.js"
  },
  "description": "An Ionic project"