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.
Instalar ImageMagick
sudo apt-get install imagemagick
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 "