Node.js: ошибка: порождать ENOENT при использовании модуля GM

Несмотря на то, что об этом спрашивали несколько раз, ни один из существующих ответов не помог мне. Используя среду 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

Я даже пробовал несколько комбинаций исходного/целевого пути. Что еще я мог упустить?


person Igor P.    schedule 01.11.2014    source источник
comment
Вы сначала установили imagemagick/graphicsmagick, как указано в gm readme? Если да, можете ли вы запустить imagemagick/graphicsmagick вручную из командной строки?   -  person mscdex    schedule 02.11.2014
comment
Да, оба были установлены. Извините за вопрос, но как я могу выполнить это вручную?   -  person Igor P.    schedule 02.11.2014
comment
Для GraphicsMagick это просто gm.   -  person mscdex    schedule 02.11.2014
comment
Нет, я не могу запустить его вручную. Получение ошибки: нет такой команды. Может быть, мне нужно установить PATH?   -  person Igor P.    schedule 02.11.2014


Ответы (3)


Модуль gm не может найти путь к исполняемому файлу gm. Таким образом, похоже, что ваш $PATH необходимо обновить, чтобы включить путь, по которому была установлена ​​​​graphicmagick.

person mscdex    schedule 02.11.2014
comment
Я предпринял следующие шаги: переустановил gm (sudo npm install gm) И добавил /node_modules/gm к моей информации PATH (vim /etc/paths), но я по-прежнему не могу ни запустить gm вручную (та же ошибка, что и раньше), ни запустить свой код (тот же ошибка). - person Igor P.; 03.11.2014
comment
Прежде всего, вы не должны использовать sudo для локальной установки, просто используйте npm install gm. Другая проблема заключается в том, что я имел в виду не gm модуль, находящийся в вашем PATH, а фактический путь к gm двоичному файлу (он полностью отделен от модуля gm). в нпм). gm двоичный файл — это тот, который вы устанавливаете из homebrew, macports или компилируете и устанавливаете из источник. Модуль gm npm обращается к двоичному файлу gm, поэтому модуль не будет работать, пока двоичный файл не будет правильно установлен. - person mscdex; 03.11.2014
comment
Спасибо за это важное уточнение! Я полностью заблудился здесь, так как думал, что работаю с обычным модулем узла. Теперь, когда я знаю, что я (также) имею дело с реальными двоичными файлами, которые должны быть установлены отдельно (без использования npm!), у меня теперь все работает. Еще раз спасибо и извините за тупость. - person Igor P.; 03.11.2014
comment
Но как установить эти бинарники? - person AbdelHady; 04.01.2015

Он ищет бинарный файл gm(GraphicsMagick)

Установите GraphicsMagick через PPA:

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

Это сработало для меня

person codemeasandwich    schedule 31.01.2015

Это помогло мне решить эту проблему.

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.

person Surya Purohit    schedule 10.09.2015