Node.js の child_process.spawn で Error: spawn ENOENT というエラーが発生したときの解決方法をご紹介します。
結論から書くと child_process.spawn の第一引数に渡していた path に実行するコマンドがないというのが原因でした。
今回のケースだと ImageMagick コマンドです。
エラーが発生したコード(一部のみ抜粋)
imagemagick = require 'imagemagick'
child_process = require 'child_process'
spawned_child_process = child_process.spawn imagemagick.identify.path
エラーメッセージ
Error: spawn ENOENT
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)
node-imagemagick という npm module はインストールしていたけど、肝心の ImageMagick がインストールされていないのが原因でした。
brew list コマンドで ImageMagick がインストールされているか確認してみてもありませんでした。
brew list | grep imagemagick
インストールされていない場合、ImageMagick をインストールしましょう。
brew install xz # ImageMagick Dependencies
brew install imagemagick
そうすれば Error: spawn ENOENT エラーは発生せず画像アップロードできるようになるはずです。