try nodejs node handling example error custom create catch node.js graphicsmagick

node.js - nodejs - throw error in node js



Error: generar ENOENT mientras se usa GM en el nodo (9)

Cuando trato de cambiar el tamaño de una imagen como esta:

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

Me sale este error:

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)

Mi estructura de archivos es la siguiente:

El código se ejecuta en el archivo postnewsitem.js

¿Por qué ocurre este error y cómo lo resuelvo?

editar: GraphicsMagick funciona, prueba:


/gm/lib/command.js tiene una opción donde puede establecer appPath, si gm ya está trabajando a través del terminal, puede obtener la ruta a gm y pasarla a través de la función subClass, en mi caso, gm se instaló en / usr / local / bin / usando brew en MacOsx.

var gm = require(''gm'').subClass({ appPath: "/usr/local/bin/" });


Como he encontrado este problema muchas veces aquí en , quiero compartir esta respuesta: https://.com/a/25461564/3970623

El "spawn ENOENT" parece ser causado por una instalación válida de herramientas de Unix a la que se puede acceder usando la variable de entorno PATH.


En mi caso, fue muy simple. Sucedió después de la instalación de GraphicsMagick en Windows 10: intenté usar una consola que aún estaba abierta antes de instalar GraphicsMagick. Por lo tanto, utilizó información de ruta anterior y no encontró GraphicsMagick. Solución: tuve que abrir una nueva consola para ejecutar el nodo para usar gm.


Enfrenté el mismo problema y lo resolví de la manera indicada.

var gm = require(''gm''); gm(''public/uploads/1710410635.jpg'').options({imageMagick: true}).resize(240,240).write(''public/uploads/1710410635.jpg'', function (err) { if (!err) console.log(''Done''); else console.log(err); })

Nota: si no ha instalado imageMagick. Por favor instala eso primero


Estoy ejecutando nodejs en Windows 7 con gm instalado y imagemagick y parece que hubo conflicto entre ambos módulos, así que busqué en Google un poco y descubrí cómo evitar eso. Agregué esta línea y eso resolvió mi problema ENOENT: var imageMagick = gm.subClass({ imageMagick: true }); entonces el código ahora se ve así:

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); })

O puede hacer eso cuando requiera gm, así:

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


Instale ImageMagick y use subClass imageMagick.

  1. Instalar ImageMagick

    sudo apt-get install imagemagick

  2. usando subclase imagemagick:

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


Otro escenario donde esto podría suceder (al usar Windows) es si intenta ejecutar su código desde una ruta UNC. mapear una letra de unidad y ejecutar la letra de unidad asignada resuelve este problema también.


Tengo el mismo problema que tú y esta fue SOLUCIÓN. ImageMagick funcionaba correctamente en terminal / consola pero no en nodejs (módulo gm). Después de 2 días de perder el cabello lo arreglé agregando la variable PATH a las variables de entorno process.env.PATH Debería haber una ruta a tu imagemagick y a otros ejecutables. Node.js tiene algo de PATH del sistema, pero por alguna razón, GM lo ignora y usa process.env.PATH

Creé la variable de entorno PATH (process.env.PATH) y establecí el valor en bin: node_modules / .bin: / usr / local / bin: / usr / bin: / bin Estoy usando MAC OS X

Tengo imageMagick instalado con brew ( brew install imagemagick )


Tuvo el mismo problema con la aplicación Node.js que se ejecuta en Windows utilizando IIS. El problema desapareció cuando configuré la opción " Cargar perfil de usuario " en " Configuración avanzada " del AppPool apropiado en " Verdadero "