web-dev-qa-db-ja.com

Node js Error:spawn ENOENT

ノードjsでSVGをPNGに変換しようとしています。私のコードはここにあります:

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'image/png'});
  var convert = child_proc.spawn("convert", ["svg:", "png:-"]),
      values = (url.parse(req.url, true).query['values'] || ".5,.5")
        .split(",")
        .map(function(v){return parseFloat(v)});

  convert.stdout.on('data', function (data) {
    res.write(data);
  });
  convert.on('exit', function(code) {
    res.end();
  });

  jsdom.env({features:{QuerySelector:true}, html:htmlStub, scripts:scripts, done:function(errors, window) {
    var svgsrc = window.insertPie("#pie", w, h, values).innerHTML;
    //jsdom's domToHTML will lowercase element names
    svgsrc = svgsrc.replace(/radialgradient/g,'radialGradient');
    convert.stdin.write(svgsrc);
    convert.stdin.end();
  }});
}).listen(8888);

実行中にこのエラーが発生しました(MACで)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

Nodejsのパスを指定しました。しかし、なぜ失敗するのかわかりません。この問題に関するアイデアはありますか?

28
sprabhakaran

convertアプリケーションが見つからないため、失敗する可能性があります。 convertへのパスが環境PATHに存在しますか?端末からconvertを実行できますか?

30
badsyntax

Linuxと同じ問題が発生しました。 npm install unoconv変換アプリケーションのインストールはそれで十分だと思っていましたが、インストールして初めてNode.jsで実行できましたSudo apt-get install unoconv

1
Lance

エラーが発生していました

Uncaught Error: spawn myExeCommand ENOENT

Spawn()に「オプション」を追加すると、機能しました。

let options = {Shell: true};
let theProcess = child_process.spawn(myExeCommand, null, options);
0
Sagan