【发布时间】:2019-05-11 02:33:04
【问题描述】:
这是符合条件的:
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)
在我看来,它基本上是在抱怨 undefined object,它应该是一个中间件。
中间件函数体完全相同。请问怎么了?
【问题讨论】:
-
在
app.get()中使用const定义之前,请先移动它。const定义不像var那样被提升。 -
谢谢。 @jfriend00。 var 也不起作用。在我把函数放在 app.get() 之前,问题就消失了。
-
是的,关键是将
const定义移到它的用途之上,而不是切换到var。
标签: node.js middleware