[Node.js] Error: spawn ENOENT の解決方法

Node.js の child_process.spawn で Error: spawn ENOENT というエラーが発生したときの解決方法をご紹介します。

Node.js | ノードジェイエス

結論から書くと 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)

Error: spawn ENOENT の解決方法

node-imagemagick という npm module はインストールしていたけど、肝心の ImageMagick がインストールされていないのが原因でした。

brew list コマンドで ImageMagick がインストールされているか確認してみてもありませんでした。

brew list | grep imagemagick

インストールされていない場合、ImageMagick をインストールしましょう。

brew install xz # ImageMagick Dependencies
brew install imagemagick

そうすれば Error: spawn ENOENT エラーは発生せず画像アップロードできるようになるはずです。

参考情報