Промежуточная война на уровне маршрутизатора: неопределенный объект - PullRequest
1 голос
/ 11 мая 2019

Это имеет право:

someRouter.get('/...',
    (req, res, next) => {
            ...
    },
    (req, res) => {...}

, в то время как это НЕ имеет права:

someRouter.get('/...',
            aMiddleware,
            (req, res) => {...}

const aMiddleware = (req, res, next) => {...}

последнее дает ошибку:

Error: Route.get() requires a callback function but got a [object Undefined]
    at Route.(anonymous function) [as get] (/Users/Leon/Documents/Projects/NodeJS/DemoJWTinNodeJS/node_modules/express/lib/router/route.js:202:15)
    at Function.proto.(anonymous function) [as get] (/Users/Leon/Documents/Projects/NodeJS/DemoJWTinNodeJS/node_modules/express/lib/router/index.js:510:19)
    at Object.get (/Users/Leon/Documents/Projects/NodeJS/DemoJWTinNodeJS/src/routes/api/userRoute.js:30:12)
    at Module._compile (internal/modules/cjs/loader.js:723:30)
    at Module._compile (/Users/Leon/Documents/Projects/NodeJS/DemoJWTinNodeJS/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:734:10)
    at Object.newLoader [as .js] (/Users/Leon/Documents/Projects/NodeJS/DemoJWTinNodeJS/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)

По моему мнению,в основном он жалуется на неопределенный объект, который должен был быть промежуточным программным обеспечением.

Тела функций промежуточного программного обеспечения точно такие же.Что не так, пожалуйста?

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Пожалуйста, укажите промежуточное программное обеспечение перед маршрутизатором, если вы используете ключевое слово const, или измените его на определение функции.

Метод 1:

const aMiddleware = (req, res, next) => {...}
someRouter.get('/...',
        aMiddleware,
        (req, res) => {...}

Метод 2:

someRouter.get('/...',
        aMiddleware,
        (req, res) => {...}
function aMiddleware(req, res, next){...}
1 голос
/ 11 мая 2019

Как только я поместил функцию перед app.get (), проблема исчезла.

const aMiddleware = (req, res, next) => {...}
omeRouter.get('/...',
            aMiddleware,
            (req, res) => {...}
...