GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-nodejs

imagemagick not working on google cloud function

Aperta
#607 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
bug P3
Lingua principale
TypeScript
Stelle
1.4k
Fork
181
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

L’issue non indica alcun file del repository né alcun test; inizia dall’handler Node.js e dal Dockerfile forniti, quindi riproduci il comando di conversione di ImageMagick in quel container e nell’ambiente Google Cloud Function. Un risultato utile sarebbe una causa confermata e una modifica documentata al framework o al runtime, ma l’issue non definisce quale comportamento dovrebbe essere modificato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
google-cloud, node.js, typescript
Ambito
backend, cloud
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.