Node.js:错误:使用GM模块时生成ENOENT

Node.js: Error: spawn ENOENT while using GM module

本文关键字:模块 ENOENT GM js 错误 使用 Node      更新时间:2023-09-26

尽管这个问题已经被问了好几次,但现有的答案都没有帮助我。使用MEAN环境(在Mac OSX上),我使用安装了graphicsmagick

sudo npm install gm

每当我运行以下脚本时,我都会收到以下错误:

{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }

这是我试图运行的一段代码:

var gm = require('gm');    
//var gm = require('gm').subClass({ imageMagick: true }); //tried this one too 
    gm('./project/public/images/webshots/test1.jpg')
           .resize(320, 240)
           .write('./project/public/images/webshots/test2.jpg', function (err) {
        if (!err) console.log('done');
        if(err){
           console.log(err);   
        }
        });

授予了适当的写入权限

sudo chmod -R 777 ./project/public/images/webshots

我甚至尝试了几种源/目标路径组合。我还能错过什么?

它正在寻找gm(GraphicsMagick)二进制

通过PPA安装GraphicsMagick:

sudo add-apt-repository ppa:dhor/myway
sudo apt-get update
sudo apt-get install graphicsmagick

这对我有效

这帮助我解决了这个问题。

gm('./project/public/images/webshots/test1.jpg')
.options({imageMagick: true})
.resize(320, 240)
.write('./project/public/images/webshots/test2.jpg', function (err) {
    if (!err) console.log('done');
    if(err){
       console.log(err);   
    }
});

注意:imageMagick应该安装

gm模块找不到gm可执行文件的路径。因此,听起来您的$PATH需要更新,以包括graphicsmagick安装到的路径。