Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Node.js : c'est parti !

    3 janvier 2018 à 21:39:19

    Je travaille avec des personnes qui cherchent à s'améliorer en français, raison pour laquelle je corrige les fautes, en général ça sert et les corrigés sont contents de voir que l'on s'intéresse à leur progression dans l'écriture.

    D'autre part, écrire correctement est une des règles du forum, donc je ne risque pas de me priver de reprendre quelqu'un dont l'orthographe ou la ponctuation me fait saigner les yeux, surtout lorsque ce quelqu'un me prend de haut.

    • Partager sur Facebook
    • Partager sur Twitter
    Développeur web back-end
      2 février 2018 à 15:36:27

      Bonjour, je souhaite utiliser l'API de twitch Kraken v5 pour faire une détection automatique de stream avec mon bot discord que j'ai dévelloper moi meme

      je souhaiterais donc savoir comment fonctionne l'API twitch sous javascript pour la détection de stream j'ai cherché sur internet pendant 2 semaines maintenant sans trouver de résultat positif ... aidez moi svp

      • Partager sur Facebook
      • Partager sur Twitter
        7 février 2018 à 10:07:28

        Salut, peut etre par la https://dev.twitch.tv/docs/api
        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2018 à 23:17:14

          Hello ! J'en suis à la partie du cours sur le NPM, et honnêtement je trouve pas ça très clair. 

          Pour installer un module, rien de plus simple. Placez-vous dans le dossier de votre projet et tapez : " 

          D'accord mais comment on se " place dans le dossier de son projet " ?

          J'ai essayé dans faire grand chose (Edit : 5 minutes après je me rends compte de mon erreur et honnêtement je sais pas ce que j'ai voulu dire ) , donc j'ai lancé le cmd.exe et j'ai tapé " npm install markdown ", mais je suis tombé sur un message d'erreur.

          http://prntscr.com/ip3dvc

          Sinon j'ai essayé d'ouvrir npm.cmd et npx.cmd, mais ces consoles ne s'ouvrent que pendant 2 secondes puis disparaissent, et node.exe me dit d'aller sur le cmd.exe pour utiliser node. 

          Je me trompe où/J'ai oublié quoi pour installer un package node ?

          Merci :)

          ( Edit : au final j'ai appris qu'il fallait créer son package.json. Ce que j'ai fait j'ai mis mon repo GitHub, par contre mon package.json se trouve à la racine de mon dossier user, donc le node_modules aussi, je pense qu'il ne me reste plus qu'à savoir comment faire pour installer un module node dans un dossier spécifique ( qui n'est pas mon disque C ), du coup j'ai toujours besoin de votre aide, mais ça a avancé )

          -
          Edité par makmal 9 mars 2018 à 23:28:20

          • Partager sur Facebook
          • Partager sur Twitter
            10 mars 2018 à 8:54:21

            npm install fonctionne toujours dans le répertoire courant, en l'occurence ici tu es dans ton répertoire utilisateur, donc npm va l'installer dedans.

            Si tu souhaites installer un module dans un autre dossier, il te suffit de naviguer avec "cd" et ensuite installer ton package.

            Attention, il est très déconseillé d'uploader ton dossier "node_modules" dans ton projet Github, le dossier est lourd et très long à manipuler (couper/copier/coller/uploader), de ce fait il est préférable d'ajouter ton module dans le fichier package.json (Utilise "--save" lorsque tu installes ton module, exemple : "npm install --save markdown"), puis d'ajouter un fichier ".gitignore" et d'y inscrire "node_modules" pour que Git n'inclue pas ton dossier de modules, la personne qui utilisera ton projet n'aura qu'à taper "npm install" pour récupérer les modules que tu as installé.

            • Partager sur Facebook
            • Partager sur Twitter
              10 mars 2018 à 16:01:17

              Celousco a écrit:

              npm install fonctionne toujours dans le répertoire courant, en l'occurence ici tu es dans ton répertoire utilisateur, donc npm va l'installer dedans.

              Si tu souhaites installer un module dans un autre dossier, il te suffit de naviguer avec "cd" et ensuite installer ton package.

              Attention, il est très déconseillé d'uploader ton dossier "node_modules" dans ton projet Github, le dossier est lourd et très long à manipuler (couper/copier/coller/uploader), de ce fait il est préférable d'ajouter ton module dans le fichier package.json (Utilise "--save" lorsque tu installes ton module, exemple : "npm install --save markdown"), puis d'ajouter un fichier ".gitignore" et d'y inscrire "node_modules" pour que Git n'inclue pas ton dossier de modules, la personne qui utilisera ton projet n'aura qu'à taper "npm install" pour récupérer les modules que tu as installé.

              Ah super, merci bien ça marche !

              D'acc, du coup j'ai enlevé la partie GitHub de mon package.json carrément, et j'ai gardé que le strict nécessaire comme sur le tuto !

              • Partager sur Facebook
              • Partager sur Twitter
                19 mars 2018 à 11:31:40

                Hello ! J'ai un autre problème, je fais la todolist ( la première ) avec EJS et Express. Et une fois arrivé au moment de lancer l'app.js, j'ai eu cette erreur quand je charge la page :

                SyntaxError: Unexpected token ) in H:\NodeJS\todolist\views\html.ejs while compiling ejs

                Du coup pour etre sûr j'ai pris exactement le code du tuto, copié/collé, et j'ai toujours le même soucis.

                J'ai ce code 3 fois ( sûrement parce que le app.js demande à charger le html.ejs 3 fois dans le code ).

                Le app.js :

                var express = require('express');
                var session = require('cookie-session');
                var bodyParser = require ('body-parser');
                var urlencodedParser = bodyParser.urlencoded({ extended: false });
                
                
                var app = express();
                
                
                
                // session
                app.use(session({secret: 'todolist'}))
                
                // typeof sert à récupérer le "type" d'une variable ( si c'est un nombre, un
                // undefined, un booléen.. )
                // req.session dans cookie-session est ce qui contient le cookie, c'est le cookie en lui même
                .use(function(req, res, next){
                    if (typeof(req.session.todolist) == 'undefined') {
                        req.session.todolist = [];
                    }
                    next();
                })
                
                .get('/todo', function(req, res) {
                  //Affiche la todolist --> req.nomDesCookies.cléDesCookies
                  res.render('html.ejs', {todolist: req.session.todolist});
                })
                
                .post('/todo/ajouter/', function(req,res) {
                  if (req.body.newtodo != '' ) {
                    req.session.todolist.push(req.body.newtodo);
                  }
                  res.redirect('/todo');
                })
                
                .get('todo/supprimer/: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);
                

                Le html.ejs

                <!DOCTYPE html>
                
                <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><a href="/todo/supprimer/<%= index %>">✘</a> <%= todo %></li>
                        <% }); %>
                        </ul>
                
                        <form action="/todo/ajouter/" method="post">
                            <p>
                                <label for="newtodo">Que dois-je faire ?</label>
                                <input type="text" name="newtodo" id="newtodo" autofocus />
                                <input type="submit" />
                            </p>
                        </form>
                    </body>
                </html>
                

                Si vous trouvez le problème je suis preneur, j'y ai passé une bonne demi-heure hier à vérifier chaque ligne une par une, et après une nuit de sommeil je vois toujours pas le soucis..

                Merci !

                • Partager sur Facebook
                • Partager sur Twitter
                  8 mai 2018 à 17:06:26

                  Bonjour,

                  voici le code :

                  var express = require('express');
                  
                  var session = require('cookie-session'); // Charge le middleware de sessions
                  
                  var bodyParser = require('body-parser'); // Charge le middleware de gestion des paramètres
                  
                  var urlencodedParser = bodyParser.urlencoded({ extended: false });
                  
                  
                  var app = express();
                  
                  
                  
                  /* On utilise les sessions */
                  
                  app.use(session({secret: 'todotopsecret'}))
                  
                  
                  
                  /* S'il n'y a pas de todolist dans la session,
                  
                  on en crée une vide sous forme d'array avant la suite */
                  
                  .use(function(req, res, next){
                  
                      if (typeof(req.session.todolist) == 'undefined') {
                  
                          req.session.todolist = [];
                  
                      }
                  
                      next();
                  
                  })

                  En ce qui concerne req.session.todolist je ne comprends pas ce qu'est todolist.

                  Je sais bien sur que cela représente la todolist mais où cela est il défini pour que le programme le sache?

                  Merci

                  -
                  Edité par azurisabelle 8 mai 2018 à 17:12:02

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 mai 2018 à 17:39:59

                    Bonjour,

                    L'objet req.session est défini par express, comme c'est déjà un objet accessible dans notre fonction il est possible de lui ajouter des propriétés à la volée (c.à.d sans utiliser des mots clés comme var ou let).

                    Lors du premier appel, l'objet session n'a pas de propriété todolist, donc req.session.todolist vaut undefined et la condition de la ligne 26 est validée, ce qui déclenche l’exécution de la ligne 28 qui initialise cette propriété en lui affectant un tableau vide.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 mai 2018 à 19:16:52

                      Merci!

                      g un peu de mal avec le concept d'utiliser un truc qui n'existe pas pr lui dire "si undefined".

                      G un peu du mal avec ce genre de langage.

                      Mais je pense avoir compris.

                      Bon...je vais retourner pr essayer de comprendre la suite du code du tp (ormis req.session.todolist ou req.session.todolist.push qui sont affaire classée)...!

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 juin 2018 à 16:22:46

                        Bonjour et merci Mateo pour ce cours qui permet d'attaquer Node en douceur.

                        J'ai mis quelques jours mais j'ai quasiment fait tout ce que tu proposais pour "Aller plus loin" avec le TP Super chat : j'ai réussi à avertir les autres clients quand un client se déconnecte et à ajouter un bouton permettant de changer de pseudo (et que les autres en soient avertis, au passage)... mais je ne suis pas 100% satisfait du résultat de mon "Poke sonore", qui ne se déclenche jamais à la première tentative. Une fois qu'un deuxième client s'en sert, plus de problème. J'aimerais comprendre ce qui cloche... (oui c'est du perfectionnisme). Quelqu'un aurait-il une idée ?

                        Mon code :

                                       var sonMessage = document.getElementById("sonMessage");
                                        var poke = document.getElementById("sonPoke");
                                        
                                        // Connexion à socket.io
                                        var socket = io.connect('http://localhost:8080');
                        
                                        // On demande le pseudo, on l'envoie au serveur et on l'affiche dans le titre
                                        var pseudo = prompt('Quel est votre pseudo ?');
                                        socket.emit('nouveau_client', pseudo);
                                        document.title = pseudo + ' - ' + 'Super Chat temps réel !';
                        
                                        // Quand on reçoit un poke sonore, jouer un son
                                        socket.on('poke_sonore', function() {
                                            sonPoke.play();
                                        })
                        
                                        // Quand on reçoit un message, on l'insère dans la page et on joue un son 
                                        socket.on('message', function(data) {
                                            insereMessage(data.pseudo, data.message)
                                            sonMessage.play();
                                        })
                        
                                        // Quand un nouveau client se connecte, on affiche l'information
                                        socket.on('nouveau_client', function(pseudo) {
                                            $('#zone_chat').prepend('<p><em>' + pseudo + ' a rejoint le Chat !</em></p>');
                                        })
                        
                                        // Quand un client change de pseudo, on affiche l'information
                                        socket.on('change_pseudo', function (data) {
                                            $('#zone_chat').prepend('<p><em>' + data.oldpseudo + ' s\'appelle désormais ' + data.pseudo + ' !</em></p>');
                                        })
                        
                                        // Quand un client se déconnecte, on affiche l'information
                                        socket.on('bye_bye', function (pseudo) {
                                            $('#zone_chat').prepend('<p><em>' + pseudo + ' a quitté le Chat !</em></p>')
                                        })
                        
                                        // Lorsqu'on envoie le formulaire, on transmet le message et on l'affiche sur la page
                                        $('#formulaire_chat').submit(function () {
                                            var message = $('#message').val();
                                            socket.emit('message', message); // Transmet le message aux autres
                                            insereMessage(pseudo, message); // Affiche le message aussi sur notre page
                                            $('#message').val('').focus(); // Vide la zone de Chat et remet le focus dessus
                                            return false; // Permet de bloquer l'envoi "classique" du formulaire
                                        });
                        
                                        // Si on clique sur le bouton "Changer de pseudo", demander le nouveau pseudo, l'envoyer au serveur et l'afficher dans le titre
                                        $('#chpseudo').on('click', function () {
                                            var nvpseudo = prompt('Entrez votre nouveau pseudo');
                                            socket.emit('change_pseudo', nvpseudo);
                                            pseudo = nvpseudo;
                                            document.title = pseudo + ' - ' + 'Super Chat temps réel !'
                                            return false;
                                        });
                        
                                        //Si on clique sur le bouton "Poke sonore", envoyer le signal au serveur
                                        $('#poke').on('click', function () {
                                            socket.emit('poke_sonore');
                                            sonPoke.play();
                                            return false;
                                        });



                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 juillet 2018 à 13:46:16

                          Bonjour SuperParisian,

                          Peux-tu nous donner aussi le code serveur ?

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Cours Node.js : c'est parti !

                          × 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