Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Todo list node.js] Erreur de chargment de la page

Sujet résolu
    14 août 2018 à 9:42:42

    Bonjour, je suis actuellement en train de suivre le tuto sur Node.js https://openclassrooms.com/fr/courses/1056721-des-applications-ultra-rapides-avec-node-js/1057616-tp-la-todo-list et j'en suis au TP sur la Todo list. J'ai exactement le même code que dans la correction (ok, j'ai fini par la recopier parce que je n'y arrivais vraiment pas) et lorsque je lance "npm start" et que je me met sur localhost:8080/todolist dans Firefox, celui-ci m'indique "erreur de chargement de la page". Aucune erreur ne s'affiche dans mon terminal, ni dans la console de Firefox.J'ai vidé mon cache, mais sans effet.

    Voici mon code :

    server.js :


    varexpress=require('express');
    varsession=require('cookie-session');
    varbodyParser=require('body-parser');
    varurlencodedParser=bodyParser.urlencoded({extended:false});
    
    varapp=express();
    
    app.use(session({secret:'todotopsecret'}))
    
    .use(function(req,res,next){
    if (typeof(req.session.todolist) =='undefined'){
    req.session.todolist= [];
    }
    next;
    })
    
    .get('/todo',function(req,res){
    //res.render('todo.ejs', {todolist: req.session.todolist});
    res.write('coucou');//juste pour tester
    })
    
    .post('/todo/add',urlencodedParser,function(req,res){
    if (req.body.newtodo!=''){
    req.session.todolist.push(req.body.newtodo);
    }
    res.redirect('/todo');
    })
    
    .get('/todo/remove/:id',function(req,res){
    if (req.params.id!=''){
    req.session.todolist.splice(req.params.id,1);
    }
    res.redirect('/todo');
    })
    
    .use(function(req,res,next){
    res.redirect('/todo');
    })
    
    .listen(8080);


    Pour tenter d'isoler le problème, j'ai commenté la ligne :

    res.render('todo.ejs',{todolist:req.session.todolist});


    Et juste en dessous, j'ai rajouté :

    res.write('coucou');


    Pour voir si cela avait un lien avec todo.ejs. Mais ça ne change rien. J'en déduis que l'erreur n'est pas à chercher dans todo.ejs. Je le montre quand même, au cas où ...

    <!DOCTYPEhtml>
    
    <html>
    <head>
    <title>Ma todolist</title>
    <style>
    a{text-decoration:none;color:black;}
    </style>
    </head>
    
    <body>
    <h1>Ma Todolist !</h1>
    <ul>
    <%todolist.foreach(function(todo,index){%>
    <li><ahref="/todo/remove/ <%= index %>">X</a> <%= todo %></li>
    <%});%>
    </ul>
    
    <formaction="/todo/add"method="post">
    <p>
    <labelfor="newtodo">Que dois-je faire ?</label>
    <inputtype="text"name="newtodo"id="newtodo"autofocus />
    <inputtype="submit"/>
    </p>
    </form>
    </body>
    </html>

    A part ça, j'ai bien installé les modules express, ejs, body-parser et cookie-session, mon package.json est identique à celui de la correction.

    {
    "name":"todolist_nodejs_openclassroom",
    "version":"1.0.0",
    "description":"",
    "main":"server.js",
    "scripts":{
    "test":"echo \"Error: no test specified\" && exit 1",
    "start":"node server.js"
    },
    "author":"",
    "license":"ISC",
    "dependencies":{
    "body-parser":"^1.18.3",
    "cookie-session":"^2.0.0-beta.3",
    "ejs":"^2.6.1",
    "express":"^4.16.3"
    }
    }

    Enfin, j'ai téléchargé le dossier .zip contenant le code de la correction, et après l'avoir décompressé et lancé un npm install, lorsque je veux le lancer avec npm start, tout se passe comme avec mon code...

    Pour ceux qui voudraient tester, voici le lien pour le télécharger //course.oc-static.com/ftp-tutos/cours/nodejs/ma-todolist.zip

    Ca fait un moment que je tourne en rond en testant différentes choses et en relisant les pages précédentes du tuto, au cas où j'aurais oublié quelque chose, mais je ne trouve rien. Quelqu'un aurais des idées svp ? Merci d'avance :)

    -
    Edité par Gjall 14 août 2018 à 17:29:57

    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2018 à 9:58:33

      Hello,

      Quand je télécharge l'archive, je vois qu'il n'y a pas de npm start contrairement à ce que tu nous as copié ici. Mais sinon, ton fichier s'appelle app.js et non server.js.

      Du coup tu peux lancer ton application en faisant un node app.js (ou en ajouter cette commande en tant que npm start).

      Et pour l'url à visiter, tu n'as pas de route /todolist, c'est simplement /todo.

      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2018 à 10:40:53

        D'habitude, quand je lance "npm start" dans le terminal, même si mon fichier s'appelle server.js, ça marche. Je l'ai bien appelé server.js et non app.js, je  trouve que c'est plus explicite. D'autre part, si je comprend bien la doc, npm start est censé lancer mon fichier server.js, non ? https://docs.npmjs.com/cli/start

        Effectivement, pour l'url, je m'étais trompé. Mais en ré-essayant avec localhost:8080/todo , le problême reste le même.

        Avec la commande "node server.js", Firefox indique "adresse introuvable". Par rapport à "erreur de chargement" que j'avais tout à l'heure, je crois qu'une erreur de chargement est un peu moins pire, car cela implique que le fichier a été trouvé, je me trompe ?

        Merci de m'aider :)

        -
        Edité par Gjall 14 août 2018 à 10:44:08

        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2018 à 10:48:29

          Bah du coup nous fait pas une archive s'il y a rien de pareil ...

          Parce que je te dis j'ai testé et ça marche bien.

          • Partager sur Facebook
          • Partager sur Twitter
            14 août 2018 à 10:48:45

            J'ai essayé en renommant serveur.js en app.js et lancé "node app.js" dans le terminal, mais j'ai toujours une erreur de chargement de la page.

            Désolé, j'avais oublié que j'avais nommé mon fichier js différemment, mais c'est la seule différence, et je ne pense pas que l'erreur vienne de là. Depuis le début du tuto, je fais tout dans un fichier "server.js" et ça fonctionnait ...

            L'archive dont je parle, c'est pas moi qui l'ai faite, c'est le rédacteur du tuto.

            -
            Edité par Gjall 14 août 2018 à 10:54:22

            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2018 à 10:52:23

              Regarde dans ton terminal s'il y a des erreurs et copie nous ton code exact ici. En utilisant les balises code pour le formattage ou alors en faisant un pastebin.
              • Partager sur Facebook
              • Partager sur Twitter
                14 août 2018 à 17:33:54

                Comme je le disais dans mon premier message, mon terminal ainsi que les devtools de Firefox ne me fournissent aucun message d'erreur.

                J'ai modifié mon premier post concernant le formatage, mon code exact s'y trouvait déjà.

                • Partager sur Facebook
                • Partager sur Twitter
                  14 août 2018 à 18:30:01

                  Du coup tu peux remplacer ton next par next().
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 août 2018 à 12:37:01

                    C'était effectivement l'absence de parenthèses qui posait problème. Maintenant, la todolist s'affiche et fonctionne très bien, merci beaucoup ! :)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Todo list node.js] Erreur de chargment de la page

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown