我試圖使用imagemagick來調整我的圖像大小,然後將它傳遞給圖像壓縮工具進行壓縮。我想利用pngquant`Node.js:使用ImageMagick時的異步問題
這裏是我的代碼片段:
// Rename and move original file
if (fs.existsSync(tmpPath + '/' + file)) {
fs.renameSync(tmpPath + '/' + file, filePath + '/' + fileName);
// Create new versions of each file
Object.keys(geddy.config.uploader.imageVersions).forEach(function (version) {
console.log(version);
counter += 1;
var opts = geddy.config.uploader.imageVersions[version];
console.log(fileName);
imageMagick.resize({
width: opts.width,
srcPath: filePath + '/' + fileName,
dstPath: filePath + '/' + fileName.replace(/\.[^/.]+$/, "") + '_' + version + fileType
}, finish(filePath + '/' + fileName.replace(/\.[^/.]+$/, "") + '_' + version + fileType));
});
} else {
console.log('Unable to find tmp file!');
}
那麼這裏就是我的回調finish
:
finish = function (file) {
execFile(pngquantPath, ['256', '--force', file], function(err, data) {
console.log(err, data);
});
};
但是,每次pngquant
時間跟它有沒有找到文件。如果我使用參數file
並進入shell,請運行pngquant file
,它將運行該進程。所以我假設它是一個異步問題(文件不存在,它試圖運行該進程)。
這是我結束了在控制檯中的錯誤: { [Error: spawn EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'spawn' } ''
任何幫助表示讚賞。
檢查文件/文件夾權限 – vinayr
如果我嘗試運行'fs.chmodSync(file,'777');'finish'回調內容而不是'錯誤:ENOENT,沒有這樣的文件或目錄'上面列出的代碼 – Neil