Formulaire de contact

Le CSS ne s'affiche pas

a marqué ce sujet comme résolu.

Petit exercice quand tu as une 404 :

  • Tu regardes le chemin d’accès que tu as mis et tu compares à ce que tu voulais ; Quand tu débutes, essaye avec le chemin complet voir si ça ne vient pas de là.

  • Tu regardes le chemin d’accès voulu ou l’emplacement de la ressource sur le disque et tu compares avec le chemin précèdent ;

  • Tu vérifies ton routeur pour voir ce qu’il fait. Dans ce cas là, la documentation est très claire (et en français) en plus tu as deux exemples, tu fais comme la #2 cependant tu es dans l’exemple #1 sans prefix.

Par ailleurs, le navigateur ne pourra pas accéder à http://localhost:3000/../public/css/bootstrap.css car il va faire :

  1. Je suis à http://localhost:3000/
  2. Naviguons vers http://localhost:3000/../ Remontons d’un niveau
  3. ERREUR : je ne peux pas remonter plus haut que la racine !

Et donc il ne pourra pas demander le fichier CSS, puisqu’il ne peut pas avoir son adresse.

+0 -0

Par ailleurs, le navigateur ne pourra pas accéder à http://localhost:3000/../public/css/bootstrap.css car il va faire :

  1. Je suis à http://localhost:3000/
  2. Naviguons vers http://localhost:3000/../ Remontons d’un niveau
  3. ERREUR : je ne peux pas remonter plus haut que la racine !

Et donc il ne pourra pas demander le fichier CSS, puisqu’il ne peut pas avoir son adresse.

amael

C’est pas vraiment ce qui se passe, non. Voici ce qui se passe :

Donne-moi http://localhost:3000/../public/css/bootstrap.css

  1. Je suis à http://localhost:3000/
  2. 404 parce que j’ai pas de fichier pour /public/css/bootstrap.css

Le path d’une URL ne correspond pas au système de fichier. Tu peux faire en sorte que ce soit le cas, certains serveurs web font ça par défaut, mais c’est pas une norme. Express ne fait pas ça ici, par exemple. Si tu fais en sorte que ton serveur web se comporte comme ce que tu décris, tu vas devoir implémenter des vérifications pour que les visiteurs ne puisse pas accéder aux fichiers parents de la racine du serveur, pour éviter qu’ils aillent choper ../../etc/shadow par exemple.

serve-static utilise parseurl ce qui vire les /.., en gros /../foo est résolu comme /foo

+0 -0

Ligne 13 de ton fichier HTML.

[edit] Bon allez je vais réécrire la documentation exprès pour toi.

Si vous utilisez app.use(express.static(path.join(__dirname, 'public'))); et que vous mettez foo.css dans le dossier public, vous pouvez charger les fichiers qui sont dans le répertoire public : http://localhost:3000/foo.css.

(J’ai mis "vous" au lieu de "tu" parce que j’ai copié-collé de la documentation puis légèrement modifié pour adapter à ta situation.)

+0 -0

Ligne 13 de ton fichier HTML.

[edit] Bon allez je vais réécrire la documentation exprès pour toi.

Si vous utilisez app.use(express.static(path.join(__dirname, 'public'))); et que vous mettez foo.css dans le dossier public, vous pouvez charger les fichiers qui sont dans le répertoire public : http://localhost:3000/foo.css.

(J’ai mis "vous" au lieu de "tu" parce que j’ai copié-collé de la documentation puis légèrement modifié pour adapter à ta situation.)

victor

Oui j’ai compris ça, mais pourquoi quand j’essaie de faire http://localhost:3000/css/bootstrap.css ça ne marche pas et il y a une erreur : "Cannot GET /css/bootstrap.css"

Je devrais donc faire un app.get ?

Non, si tu as, dans le même dossier que le fichier JS que t’as montré, un dossier public avec dedans un dossier css et dedans un fichier bootstrap.css, tu pourras y accéder à cette adresse.

Et je suis pas sûr que tu as compris ça. Il y a 30 minutes t’avais pas du tout compris ça, et là encore ton histoire de app.get me fait penser que t’as pas compris.

+0 -0

Non, si tu as, dans le même dossier que le fichier JS que t’as montré, un dossier public avec dedans un dossier css et dedans un fichier bootstrap.css, tu pourras y accéder à cette adresse.

Et je suis pas sûr que tu as compris ça. Il y a 30 minutes t’avais pas du tout compris ça, et là encore ton histoire de app.get me fait penser que t’as pas compris.

victor

Mon fichier js n’a pas de dossier, et j’avoue que je comprends pas tout ouais.

Aurais-tu Discord ? Ca nous permettrais d’aller plus vite :)

+0 -0

Ok. Alors reprenons à la base.

  1. Tu créés un dossier quelque part sur ton disque.
  2. Dans ce dossier tu mets le fichier JS, le fichier HTML dans un dossier views (cf. ton code l.12), le CSS dans un dossier CSS dans un dossier public.
  3. Tu vas dans ce dossier et tu fais node tonfichier.js
  4. Dans ton navigateur tu vas sur http://localhost:3000/css/bootstrap.css et tu obtiens ton CSS.

[edit] Discord ? Non, et ça ne m’intéresse pas.

+0 -0

Ok. Alors reprenons à la base.

  1. Tu créés un dossier quelque part sur ton disque.
  2. Dans ce dossier tu mets le fichier JS, le fichier HTML dans un dossier views (cf. ton code l.12), le CSS dans un dossier CSS dans un dossier public.
  3. Tu vas dans ce dossier et tu fais node tonfichier.js
  4. Dans ton navigateur tu vas sur http://localhost:3000/css/bootstrap.css et tu obtiens ton CSS.

[edit] Discord ? Non, et ça ne m’intéresse pas.

victor

J’obtiens une erreur : "Cannot GET /css/bootstrap.css"

EDIT: C’est bon, erreur de ma part. J’ai bien le css

+0 -0

(Désolé pour la réponse tardive) Alors, le problème venait du html en fait. Je devais juste faire "<link href="http://localhost:3000/css/bootstrap.css" rel="stylesheet">"

Autre problème (cela m’évite d’ouvrir un autre topic), lorsque l’on va sur ma page, on peut facilement voir mon code sourc eet le soucis c’est qu’on voit mon email et le mdp, comment je peux arranger ça ?

Par défaut, nodejs va partager aucun fichier. C’est lorsque tu fais appelles à des fonctions comme app.use(express.static(path.join(__dirname, 'public'))); que nodejs via express partage tes fichiers. Donc tant que tes fichiers ne sont pas dans public, ils ne sont pas partagés.

+0 -0

Ah oui effecivement :)

Aller, dernier petit soucis : j’ai un site, et j’aimerais mettre ce code sur ce dernier. Le problème est que pour que le code marche il faut que je lance le app.js et j’ai pas envie que ça dépende tout le temps de ça. Existe-t-il un hébergeur même payant qui me permettrait de toujours activer mon formulaire de contact ?

J’espère que vous avez compris.

Merci et bonne journée/soirée !

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