Debug('dispatching %s %s', req.method, req.url);


#1

I have an error while running a node express server:

[nodemon] starting `node src/index.js`
C:\Users\bonpa\Downloads\todolistproject\node_modules\express\lib\router\index.js:138
  debug('dispatching %s %s', req.method, req.url);
                                 ^

TypeError: Cannot read property 'method' of undefined
    at Function.handle (C:\Users\bonpa\Downloads\todolistproject\node_modules\express\lib\router\index.js:138:34)
    at new router (C:\Users\bonpa\Downloads\todolistproject\node_modules\express\lib\router\index.js:46:12)
    at Object.<anonymous> (C:\Users\bonpa\Downloads\todolistproject\src\api\todos\index.js:6:14)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (C:\Users\bonpa\Downloads\todolistproject\src\routes.js:1:80)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
[nodemon] app crashed - waiting for file changes before starting...

link to my project repo git : https://github.com/bonpapajosie/todolist

pls help


#2

todolist/src/api/todos/ todos.controller.js

Ya un niveau en trop dans let check.
router.get() attend une fonction comme 2e parametre, pas une Promise.

Illustration par l’exemple :

let check = (req, res, next) => {
  tasklist.find({})
    .then(data => {
      res.json({doc: data});
  })
    .then(err => {
      res.status(404).json({ err });
  });
};

#3

merci pour ta réponse;

mais, c’est bon je viens de résoudre le problème

todos.controller.js

the wrong way:

const tasklist = require('./todos.model');

    let check = new Promise((resolve, reject) => {
        setTimeout(function() {
            (req, res) => {
                tasklist.find({})
                .then(data => {
                    resolve(console.log(data));
                    // resolve(res.status(200).json({ doc: data }));
                })
                .then(err => {
                    console.log(err);
                    // res.status(503).json({ msg: err });
                });
            }
        }, 300);
    });
    module.exports = check;

and the right way:

const tasklist = require('./todos.model');
module.exports = {
  check: (req, res, next) => {
        tasklist.find({})
        .then(data => {
          if (data === null) {
            res.status(404).json({ errmsg: 'aucune Competences trouver' });
          } else {
            res.status(200).json({ errmsgok: 'cool', doc: data });
          }
        })
        .catch(() => {
          console.log(err);
        });
  }
};

j’aurai du exporter les modules comme du json.

voilà, merci


#4

Oui c’est exactement ce que je t’ai corrigé.
“exporter directement les modules comme du JSON”
:
Pas compris… quel rapport entre le module et le JSON ?
module : container de controller http
Json : données


#5

Oui, c’est vrai, l’erreur et de ma part, je n’ai pas bien expliqué ce que j’ai envie de faire en détail.

Voilà lien corrigé et fonctionnel : https://github.com/bonpapajosie/todolist