GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-nodejs

imagemagick not working on google cloud function

Abierto
#607 0 comentarios 1 reacción 0 asignados Ver en GitHub
bug P3
Lenguaje dominante
TypeScript
Estrellas
1.4k
Forks
181
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I am using this npm package for [image-magick](https://www.npmjs.com/package/imagemagick) and using google cloud functions framework to be used with my package.

the package that google cloud function are using for image magick as mentioned in their docs [https://cloud.google.com/appengine/docs/standard/reference/system-packages?tab=node.js#top](url), this doesn't work.

I am creating a simple function to download a file and then convert that pdf file to png file using this code

```
import * as util from "util";
import fs from "fs";

import * as im from "imagemagick";
import * as child_process from "child_process";
import functions from "@google-cloud/functions-framework";
import { CloudProvider } from "./packages/cloud-provider/src/index.js";

const { execFileSync, spawnSync, execSync } = child_process;

const cloud = CloudProvider.getInstance();

functions.http("im-testing", async (req, res) => {
let val = await cloud.storage.getFile(
"gcp-setup-testing",
"asad-testing/pdf-test.pdf"
);
const output1 = execSync("ls ./temp").toString();
console.log("before: ", output1);
fs.writeFileSync("./temp/pdf-test.pdf", val?.Body);
if (fs.existsSync("./temp/pdf-test.pdf")) {
execSync('chmod 755 ./temp/pdf-test.pdf');
}

let convert = util.promisify(im.convert);
let convArr = [
"-density",
"400",
"./temp/pdf-test.pdf",
"-resize",
"25%",
"./temp/a.png",
];
await convert(convArr);
const output2 = execSync("ls ./temp").toString();
console.log("after: ", output2);
res.status(200).json({ message: "File converted successfully" });
});

```

I always get this error `Command failed: convert-im6.q16: no images defined `./temp/a.png' @
error/convert.c/ConvertImageCommand/3229.`

I made a docker container using this

```
FROM node:20.9.0
# Install ImageMagick
RUN apt-get update -y && \
apt-get install -y imagemagick
WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build-ts
CMD ["npm", "run", "start-ts"]
```

but the max version that container allows for imagemagick is 6.9.11 and that isn't working.
I tried running a simple command for convert that also gave me the same error. Let me know if you need any other log or information on this one but the imagemagick v6.9.11 isn't working anymore on google cloud function

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

El issue no menciona ningún archivo del repositorio ni ninguna prueba; empieza con el handler de Node.js y el Dockerfile proporcionados, y luego reproduce el comando de conversión de ImageMagick en ese contenedor y en el entorno de Google Cloud Function. Un resultado útil sería una causa confirmada y un cambio documentado del framework o del runtime, pero el issue no define qué comportamiento debería cambiarse.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
google-cloud, node.js, typescript
Área
backend, cloud
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.