web-dev-qa-db-fra.com

Node js Error: spawn ENOENT

J'essaie de convertir SVG en PNG avec le nœud js. Mon code est ici:

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);

Lors de l'exécution, j'ai eu cette erreur (sous 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)

J'ai spécifié le chemin pour nodejs. Mais je ne sais pas pourquoi cela échoue. Une idée sur ce problème?

28
sprabhakaran

Il échoue probablement car il ne trouve pas l'application convert. Le chemin vers convert existe-t-il dans votre environnement PATH? Pouvez-vous exécuter convert à partir de votre terminal?

30
badsyntax

J'ai eu ce même problème sous Linux. J'ai fait le npm install unoconv et j'ai pensé que cela prendrait en charge l'installation de l'application de conversion, mais c'est seulement après l'avoir installée que je pourrais la faire fonctionner dans Node.js Sudo apt-get install unoconv

1
Lance

J'obtenais l'erreur

Uncaught Error: spawn myExeCommand ENOENT

Une fois que j'ai ajouté des "options" au spawn (), cela a fonctionné.

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