Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire de Contact Node.js

Erreur

Sujet résolu
    27 juillet 2017 à 23:15:01

    Celousco a écrit:

    var morgan = require('morgan');
    
    app.use(morgan('tiny'));

    Documentation : https://github.com/expressjs/morgan

    Tu dois remplacer ton express.logger() qui n'existe plus. (Ligne 9)


    Toujours la même erreur :

    throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https
    ://github.com/senchalabs/connect#middleware.');
          ^
    
    Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senc
    halabs/connect#middleware.
        at Function.get (C:\Users\admin\node_modules\express\lib\express.js:107:13)
        at Object.<anonymous> (C:\Users\admin\Desktop\Contact\app.js:10:16)
        at Module._compile (module.js:569:30)
        at Object.Module._extensions..js (module.js:580:10)
        at Module.load (module.js:503:32)
        at tryModuleLoad (module.js:466:12)
        at Function.Module._load (module.js:458:3)
        at Function.Module.runMain (module.js:605:10)
        at startup (bootstrap_node.js:158:16)
        at bootstrap_node.js:575:3
    var express = require('express');
    var swig = require('swig');
    var mailer = require('express-mailer');
    var path = require('path');
    var morgan = require('morgan');
    var app = express();
     
     
    app.use(morgan('tiny'));
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, 'public')));
    app.engine('html', swig.renderFile);
     
    app.set('views', __dirname+'/views');
    app.set('view engine', 'html');
     
    app.get('/', function(req, res){
      res.render('index');
    });
     
     
    app.post('/contact', function(req, res, next){
      mailer.extend(app, {
        from: req.body.email,
        host: 'smtp.free.fr',
        secureConnection: false,
        port: 25,
        transportMethod: 'SMTP'
      });
     
      app.mailer.send('email', {
        to: 'ton@email.com',
        subject: req.body.subject,
        message: req.body.message
      }, function(err){
        if(err){
          console.log('On a une erreur!');return;
        }
        res.send('Email envoyé');
      });
    });
     
    app.listen(3000);
    console.log('App is running');




    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2017 à 23:29:21

      Même processus qu'avec Logger, trouve le package qui le remplace et intègre le à ton code.
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2017 à 23:43:47

        Celousco a écrit:

        Même processus qu'avec Logger, trouve le package qui le remplace et intègre le à ton code.


        Je suppose que c'est bodyParser ?

        EDIT : J'ai aussi vu que static avait changer pour Express 4, du coup j'ai lu la doc, j'ai vu qu'il fallait faire un 

        npm install serve-static

        et ducoup : const serverStatic = require('serve-static');

        EDIT 2 : C'est indiqué qu'il faut faire un coup de 

        npm install --save multer

        et donc de : 

        const multer  = require('multer');

        Le problème c'est que dans la console on me dit que multer n'est pas définis.

        Voici mon code: 

        const express = require('express');
        const swig = require('swig');
        const mailer = require('express-mailer');
        const path = require('path');
        const morgan = require('morgan');
        const app = express();
        const multer  = require('multer');
        const serveStatic = require('serve-static');
         
         
        app.use(morgan('tiny'));
        app.use(express.multer());
        app.use(express.serveStatic(path.join(__dirname, 'public')));
        app.engine('html', swig.renderFile);
         
        app.set('views', __dirname+'/views');
        app.set('view engine', 'html');
         
        app.get('/', function(req, res){
          res.render('index');
        });
         
         
        app.post('/contact', function(req, res, next){
          mailer.extend(app, {
            from: req.body.email,
            host: 'smtp.free.fr',
            secureConnection: false,
            port: 25,
            transportMethod: 'SMTP'
          });
         
          app.mailer.send('email', {
            to: 'ton@email.com',
            subject: req.body.subject,
            message: req.body.message
          }, function(err){
            if(err){
              console.log('On a une erreur!');return;
            }
            res.send('Email envoyé');
          });
        });
         
        app.listen(3000);
        console.log('App is running');



        -
        Edité par Nikosss 27 juillet 2017 à 23:56:36

        • Partager sur Facebook
        • Partager sur Twitter
          28 juillet 2017 à 8:01:46

          Voilà la doc de multer : https://github.com/expressjs/multer
          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2017 à 11:46:23

            Celousco a écrit:

            Voilà la doc de multer : https://github.com/expressjs/multer


            Multer dois prendre quoi en paramètre ? Sur la doc c'est pas la même chose que je veux faire j'ai l'impression :/
            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2017 à 12:56:53

              Après une recherche Google il semblerait que mettre ces lignes corrigent les erreurs :

              app.use(bodyParser.json());
              app.use(bodyParser.urlencoded({
                extended: true
              }));

              (Tu remplaces la ligne où tu as multer et ça devrait le faire)

              -
              Edité par Celousco 28 juillet 2017 à 12:57:20

              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2017 à 12:57:22

                Celousco a écrit:

                Après une recherche Google il semblerait que mettre ces lignes corrigent les erreurs :

                app.use(bodyParser.json());
                app.use(bodyParser.urlencoded({
                  extended: true
                }));




                Du coup, je met pas multer ?

                EDIT : Il y a toujours l'erreur :

                const express = require('express');
                const swig = require('swig');
                const mailer = require('express-mailer');
                const path = require('path');
                const bodyParser = require('body-parser');
                const logger = require('morgan');
                const app = express();
                
                
                app.use(express.logger());
                app.use(express.static(path.join(__dirname, 'public')));
                app.engine('html', swig.renderFile);
                app.use(bodyParser.json());
                app.use(bodyParser.urlencoded({
                  extended: true
                }));
                
                app.set('views', __dirname+'/views');
                app.set('view engine', 'html');
                
                app.get('/', function(req, res){
                  res.render('index');
                });
                
                
                app.post('/contact', function(req, res, next){
                  mailer.extend(app, {
                    from: req.body.email,
                    host: 'smtp.free.fr',
                    secureConnection: false,
                    port: 25,
                    transportMethod: 'SMTP'
                  });
                
                  app.mailer.send('email', {
                    to: 'ton@email.com',
                    subject: req.body.subject,
                    message: req.body.message
                  }, function(err){
                    if(err){
                      console.log('On a une erreur!');return;
                    }
                    res.send('Email envoyé');
                  });
                });
                
                app.listen(3000);
                console.log('App is running');



                -
                Edité par Nikosss 28 juillet 2017 à 12:58:39

                • Partager sur Facebook
                • Partager sur Twitter
                  28 juillet 2017 à 13:00:11

                  As-tu installé body-parser ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 juillet 2017 à 13:08:06

                    Celousco a écrit:

                    As-tu installé body-parser ?


                    Oui, via la commande "npm install body-parser"

                    Voici l'erreur :

                     node app.js
                    C:\Users\admin\node_modules\express\lib\express.js:107
                          throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https
                    ://github.com/senchalabs/connect#middleware.');
                          ^
                    
                    Error: Most middleware (like logger) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchala
                    bs/connect#middleware.
                        at Function.get (C:\Users\admin\node_modules\express\lib\express.js:107:13)
                        at Object.<anonymous> (C:\Users\admin\Desktop\Contact\app.js:10:16)
                        at Module._compile (module.js:569:30)
                        at Object.Module._extensions..js (module.js:580:10)
                        at Module.load (module.js:503:32)
                        at tryModuleLoad (module.js:466:12)
                        at Function.Module._load (module.js:458:3)
                        at Function.Module.runMain (module.js:605:10)
                        at startup (bootstrap_node.js:158:16)
                        at bootstrap_node.js:575:3



                    -
                    Edité par Nikosss 28 juillet 2017 à 13:08:19

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 juillet 2017 à 13:19:21

                      Wow, je viens de lire ... c'est un peu du n'importe quoi tout ça, va falloir lire la doc (encore une fois) et si tu n'y arrive pas, suivre ce qu'on te conseille.

                      Il te dit clairement que logger n'est plus dans express directement. Et toi tu fais ça dans ton code :

                      app.use(express.logger());

                      Tu en déduis quoi ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 juillet 2017 à 13:27:01

                        Pitox a écrit:

                        Wow, je viens de lire ... c'est un peu du n'importe quoi tout ça, va falloir lire la doc (encore une fois) et si tu n'y arrive pas, suivre ce qu'on te conseille.

                        Il te dit clairement que logger n'est plus dans express directement. Et toi tu fais ça dans ton code :

                        app.use(express.logger());

                        Tu en déduis quoi ?

                        C'est morgan qu'il faut utilisé normalement

                        const logger = require('morgan');

                        Si j'ai écris cette ligne, ça devrait aller non ?


                        -
                        Edité par Nikosss 28 juillet 2017 à 13:27:12

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 juillet 2017 à 13:48:07

                          Là cette ligne c'est l'import de la librairie dans ton code, mais tu ne l'utilises à aucun moment ...

                          Est-ce que tu sais à quoi ça sert d'ailleurs ?

                          On a vraiment l'impression que tu comprends rien à ce que tu fais. Et c'est à toi de faire cet effort de compréhension, pas nous.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 juillet 2017 à 13:56:25

                            Pitox a écrit:

                            Là cette ligne c'est l'import de la librairie dans ton code, mais tu ne l'utilises à aucun moment ...

                            Est-ce que tu sais à quoi ça sert d'ailleurs ?

                            On a vraiment l'impression que tu comprends rien à ce que tu fais. Et c'est à toi de faire cet effort de compréhension, pas nous.


                            Je saurais pas te détailler parfaitement mais d'après ce que j'ai compris c'est l'import de la librarie comme tu le dis, et cela va nous permettre de l'utiliser de façon à pouvoir ajouter de nouvelles méthodes etc..

                            Exemple : pour un bot Discord, on est obligé de faire un : 

                            const Discord = require('discord.js')

                            Sinon, le bot ne fonctionnera pas.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 juillet 2017 à 14:08:51

                              Non mais c'était pour la librairie en elle même ? A quoi est ce qu'elle sert ? Est ce que tu en as besoin pour commencer ?

                              Du coup après avoir jeté un coup d'oeil à la doc de morgan, il va falloir que tu changes ton code :

                              app.use(express.logger()); ==> app.use(logger('combined');

                              Vu que la méthode logger n'existe plus directement sur express, tu dois utiliser la librairie que tu as importée (morgan). Et elle nécessite un paramètre de formatage du coup j'ai choisi 'combined' pour un truc assez basique.

                              -
                              Edité par Pitox 28 juillet 2017 à 14:09:30

                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 juillet 2017 à 14:15:41

                                EDIT : Voici mon code :

                                var express = require('express'),
                                swig = require('swig'),
                                mailer = require('express-mailer'),
                                path = require('path'),
                                bodyParser = require('body-parser')
                                app = express();
                                
                                app.use(bodyParser.urlencoded({ extended: false }));
                                app.use(express.static(path.join(__dirname, 'public')));
                                app.engine('html', swig.renderFile);
                                
                                app.set('views', __dirname+'/views');
                                app.set('view engine', 'html');
                                
                                app.get('/', function(req, res){
                                  res.render('index');
                                });
                                
                                mailer.extend(app, {
                                  from: 'no-reply@example.com', //
                                  host: 'smtp.live.com', // hostname 
                                  secureConnection: true, // use SSL 
                                  port: 465, // port for secure SMTP 
                                  transportMethod: 'SMTP', // default is SMTP. Accepts anything that nodemailer accepts 
                                  auth: {
                                    user: 'monemail@gmail.com',
                                    pass: 'monmdp'
                                  }
                                });
                                
                                app.post('/contact', function(req, res, next){
                                    
                                  app.mailer.send('email', {
                                    to: 'monemail@gmail.com',
                                    subject: req.body.subject,
                                    message: req.body.message
                                  }, function(err){
                                    if(err){
                                      console.error(err);
                                      res.send('Une erreur est survenue');
                                      return;
                                    }
                                    res.send('Email envoyé');
                                  });
                                });
                                
                                
                                
                                
                                app.listen(3000);
                                console.log('App is running');
                                
                                

                                J'ai une erreur que je n'arrive pas à résoudre :

                                App is running
                                { Error: connect ETIMEDOUT 65.55.163.152:465
                                    at Object.exports._errnoException (util.js:1026:11)
                                    at exports._exceptionWithHostPort (util.js:1049:20)
                                    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1136:14)
                                  code: 'ETIMEDOUT',
                                  errno: 'ETIMEDOUT',
                                  syscall: 'connect',
                                  address: '65.55.163.152',
                                  port: 46

                                EDIT 2 : C'est bon, j'ai trouvé comment faire. Sujet à fermer


                                -
                                Edité par Nikosss 29 juillet 2017 à 10:35:45

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Formulaire de Contact Node.js

                                × 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