ExpressJs afficher une image

a marqué ce sujet comme résolu.

Bonjour,

J’essaye de m’initier à Node.js et plus précisément à Express.

Je rencontre un pépin dans l’affichage d’image : quand je vais chercher directement ma template (avec "file://path/index.ejs") l’image s’affiche, mais ça bloque quand je passe par mon programme Express…

Pourriez-vous m’aider ?

Bonne journée,

@flopy78

Bonjour,

Voici l’architecture de mon premier test :

index.js images —> home.jpg views —> index.ejs

Voici le code de "index.js" (mon programme node.js) :

import express from 'express';

const app = express();

app.set('view engine', 'ejs')


app.get('/', (req, res) => {
  res.render("index.ejs", { "id": req.query.id })
})

app.listen(3000);
console.log('Running...');

Et voici mon template 'index.ejs’ (qui est statique pour le moment) :

<!DOCTYPE html>

<html>
  <head>
    <title>Titre</title>
    <meta charset="UTF-8">
  </head>

  <body>
    <h1>Mon titre</h1>
    <img src = "../images/home.jpg"/>
  </body>
</html>

Quand j’ouvre le template en tant que page HTML, sans passer par Express, tout fonctionne, mais l’image ne se charge plus quand je passe par 'index.js’…

Auriez-vous une explication ?

Bonne journée,

@flopy78

Normal, il faut un serveur HTTP pour servir l’image si tu passes par ce protocole (le protocole file étant géré directement par ton navigateur puisque les fichiers sont locaux, mais le reste fait appel à des ressources distantes).

Il faut donc servir ton image via Express (ou tout autre serveur si tu préfères, mais il faudra probablement une config plus complexe pour gérer deux serveurs sur un même domaine).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte