酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

grunt buildでエラーが発生したときのトラブルシューティング

grunt buildでハマってしまって悩んだ記録です。

npm installが途中で強制終了してしまう

microインスタンスでメモリが少ないので途中で強制終了が発生していました。

この画像ではmongodbで強制終了していますが、毎回同じモジュールで強制終了されてしまっていたのでメモリ不足が原因だと気付きませんでした。

「nodeとnpmのバージョンがモジュールの想定しているバージョンと異なるためじゃないか?」と考えて無駄な試行錯誤を繰り返していました。

f:id:ch3cooh393:20160420231030p:plain

対策

スワップ領域を拡張すると改善されました。

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-gypnpm 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",