错误:在节点中使用GM时生成ENOENT

Oli*_*s_j 34 node.js graphicsmagick

当我尝试调整像这样的图像:

                gm('public/uploads/1710410635.jpg')
                .resize(240, 240)
                .noProfile()
                .write('public/uploads/1710410635_t.jpg', function (err) {
                  if (!err) console.log('done');
                });
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:945:11)
    at Process.ChildProcess._handle.onexit (child_process.js:736:34)
Run Code Online (Sandbox Code Playgroud)

我的文件结构如下:

在此输入图像描述

代码在postnewsitem.js文件中执行

为什么会出现此错误以及如何解决?

编辑:GraphicsMagick工作,证明:

在此输入图像描述

小智 66

安装ImageMagick并使用subClass imageMagick.

  1. 安装ImageMagick

    sudo apt-get install imagemagick
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用subClass imagemagick:

    var gm = require('gm').subClass({ imageMagick: true });
    
    Run Code Online (Sandbox Code Playgroud)

  • 谢谢!那是给我的. (7认同)

Mat*_*lis 11

我在Windows 7上运行了nodejs,安装了gm和imagemagick,似乎两个模块之间存在冲突,所以我用了一些googled并找出了如何避免这种情况.我添加了这一行,这解决了我的ENOENT问题: var imageMagick = gm.subClass({ imageMagick: true }); 所以代码现在看起来像这样:

var gm = require('gm'); 
var imageMagick = gm.subClass({ imageMagick: true });

imageMagick('test/pig.jpg').rotate('green', 45).write('test/crazy_pig.jpg', function (err) {
    if (!err) console.log('crazy pig has arrived');
    else console.log(err);
})
Run Code Online (Sandbox Code Playgroud)

或者你可以在需要gm时这样做,如下:

var gm = require('gm').subClass({ imageMagick: true });
Run Code Online (Sandbox Code Playgroud)


epe*_*leg 1

可能发生这种情况的另一种情况(使用 Windows 时)是如果您尝试从 UNC 路径运行代码。映射驱动器号并运行映射的驱动器号也可以解决此问题。