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