grunt buildでハマってしまって悩んだ記録です。
npm installが途中で強制終了してしまう
microインスタンスでメモリが少ないので途中で強制終了が発生していました。
この画像ではmongodbで強制終了していますが、毎回同じモジュールで強制終了されてしまっていたのでメモリ不足が原因だと気付きませんでした。
「nodeとnpmのバージョンがモジュールの想定しているバージョンと異なるためじゃないか?」と考えて無駄な試行錯誤を繰り返していました。
対策
スワップ領域を拡張すると改善されました。
grunt-contrib-sassがインストールされていない
grunt build
すると途中でabortされてしまう。
Running "concurrent:dist" (concurrent) task Running "sass:server" (sass) task Warning: You need to have Ruby and Sass installed and in your PATH for this task to work. More info: https://github.com/gruntjs/grunt-contrib-sass Use --force to continue. Aborted due to warnings.
対策
gem install sass
でsassをインストールします。これは対策が書かれているのでその通りに従いました。
$ gem install sass Fetching: sass-3.4.22.gem (100%) Successfully installed sass-3.4.22 Parsing documentation for sass-3.4.22 Installing ri documentation for sass-3.4.22 Done installing documentation for sass after 4 seconds 1 gem installed
bowerがインストールされていない
grunt build
すると途中でabortされてしまう。
Execution Time (2016-04-20 11:11:18 UTC) Total 1.5sError: File to import not found or unreadable: ../bower_components/font-awesome/scss/font-awesome. on line 4 of client/app/app.scss Use --trace for backtrace. Warning: Error: File to import not found or unreadable: ../bower_components/font-awesome/scss/font-awesome. on line 4 of client/app/app.scss Use --trace for backtrace. Use --force to continue. Aborted due to warnings.
対策
bower
をインストールします。新しい環境でビルドするときに忘れていたりします。
$ npm install -g bower $ cd app_directory $ bower install
imageminが正しく動いてくれない
grunt build
すると途中でabortされてしまう。
Running "imagemin:dist" (imagemin) task Warning: Error: spawn /home/ch3cooh_user/web-server/node_modules/optipng-bin/vendor/optipng ENOENT in file client/assets/images/page_logo.png Use --force to continue. Aborted due to warnings.
対策
このトラブルは随分と悩みました。imageminが正しく動かないことが原因なのは早いうちからわかっていましたが、npm install
すると下記のようなエラーが発生しているのに気付くまでに時間がかかりました。
npm ERR! v8-debug@0.4.6 install: `node-pre-gyp install --fallback-to-build` npm ERR! Exit status 1
npm install -g node-gyp
やnpm install node-pre-gyp -g
を実行してみましたが、正しくインストールされて特に問題が発生するわけではありませんでした。imageminのエラーは変わらず出続けていました。
最終的に行き着いたのがpackage.jsonの依存関係を見ていくという力技で追い詰めていった結果、"grunt-node-inspector"を"^0.2.0"
から">=0.2.0"
に変更することで問題が解決しました。
"grunt-ng-constant": "^2.0.1", "grunt-node-inspector": "^0.2.0", "grunt-nodemon": "^0.4.0",
↓
"grunt-ng-constant": "^2.0.1", "grunt-node-inspector": ">=0.2.0", "grunt-nodemon": "^0.4.0",