Utiliser le module canvas avec nodejs
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Utiliser le module canvas avec nodejs

Par
JeromeS1
Créé le 2018-01-23 18:51:36 (edited on 2024-09-04 13:19:51) dans Hébergements Web

Bonjour,

Je n'arrive pas à installer le module canvas :
https://www.npmjs.com/package/canvas

J'ai toujours :
```
Deploying function...
Error: Internal server error
```

Dans package.json j'ai :
```json
"dependencies": {
"canvas": "latest"
}
```
Et dans apk.list j'ai essayé plusieurs modules : https://pkgs.alpinelinux.org/packages
en m'inspirant de :
https://github.com/Automattic/node-canvas/wiki/_pages

mais il n'y a que cairo qui fonctionne :
```json
cairo
cairo-devel
```

Y'a t'il une solution ?
Merci :)


1 réponse ( Latest reply on 2018-01-25 14:53:35 Par
ThomasC6
)

Bonjour,

Tout d'abord le package.json doit être un JSON valide :
> {
> "dependencies": {
> "canvas": "1.6.9"
> }
> }

Ensuite, concernant les packages Alpine, vous pouvez essayer avec :
> build-base
> cairo-dev

Nous allons essayer de maintenir une base avec la liste des dépendances Alpine à installer en fonction des modules NPM.

Avec ces 2 modifications, votre fonction devrait se déployer.

De notre côté nous allons améliorer le retour lors du déploiement ASAP afin que vous ayez une erreur détaillée lors d'un échec de déploiement.

Bonne journée,

Thomas

Bonjour,

Ca fonctionne :)

Si vous maintenez une base de dépendance Alpine, autant les installer automatiquement lorsqu'ils sont dans votre bdd car là on tombe sur un problème sysadmin que les devs n'aiment pas ;)

La sortie est forcément texte ?
```
callback(null, canvas.toBuffer());
// renvoit
{"type":"Buffer","data":[137,80,78,71,13,10,26,10,0...
```

Y'a moyen d'avoir une sortie binaire et de spécifier des headers ?

Le top serait de pouvoir faire :
```json
functions:
monfic:
runtime: nodejs
handler: monfic.mafunc
headers:
Content-type: image/png
Cache-Control: no-cache
output: binary
```
ou d'avoir des paramètres supplémentaire au callback()

Bonjour,

Nous notons vos remarques.

Concernant la sortie d'une fonction, pour l'instant c'est forcément du texte oui, bien qu'il soit possible d'encoder un binaire en base64 en solution temporaire.

Toutefois, c'est une proposition très pertinente qui mérite d'être étudiée, nous allons voir comment implémenter cette fonctionnalité tout en gardant un fonctionnement simple pour l'utilisateur.

Bonne journée,

Thomas

Les réponses sont actuellement désactivées pour cette question.