我正在尝试使用节点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的路径。但我不知道它失败的原因。对这个问题有什么看法吗?
答案 0 :(得分:30)
它可能会失败,因为它无法找到convert
应用程序。您的环境路径中是否存在convert
的路径?你能从终端运行convert
吗?
答案 1 :(得分:1)
我从Linux运行同样的问题。我做了npm install unoconv
,并认为这将负责安装转换应用程序,但只有当我安装它时才能让它在Node.js中运行
sudo apt-get install unoconv
答案 2 :(得分:0)
我遇到了错误
Uncaught Error: spawn myExeCommand ENOENT
一旦我在spawn()中添加了“选项”,它就会起作用。
let options = {shell: true};
let theProcess = child_process.spawn(myExeCommand, null, options);