今天遇到了如下的问题.:
TypeError: app.middleware.adminauth is not a function
at module.exports (D:\ReactBlog\react_blog\service\app\router\admin.js:5:38)
at module.exports (D:\ReactBlog\react_blog\service\app\router.js:9:30)
at AppWorkerLoader.loadFile (D:\ReactBlog\react_blog\service\node_modules\egg-core\lib\loader\egg_loader.js:304:13)
at AppWorkerLoader.loadRouter (D:\ReactBlog\react_blog\service\node_modules\egg-core\lib\loader\mixin\router.js:17:10)
at AppWorkerLoader.load (D:\ReactBlog\react_blog\service\node_modules\egg\lib\loader\app_worker_loader.js:43:10)
at new Application (D:\ReactBlog\react_blog\service\node_modules\egg\lib\application.js:66:19)
at Object.<anonymous> (D:\ReactBlog\react_blog\service\node_modules\egg-cluster\lib\app_worker.js:21:13)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Module.load (internal/modules/cjs/loader.js:1002:32)
[2020-04-04 11:32:08.486] [cfork:master:6884] worker:2000 disconnect (exitedAfterDisconnect: false, state: disconnected, isDead: false, worker.disableRefork: true)
[2020-04-04 11:32:08.486] [cfork:master:6884] don't fork, because worker:2000 will be kill soon
2020-04-04 11:32:08,487 INFO 6884 [master] app_worker#1:2000 disconnect, suicide: false, state: disconnected, current workers: ["1"]
[2020-04-04 11:32:08.494] [cfork:master:6884] worker:2000 exit (code: 1, exitedAfterDisconnect: false, state: dead, isDead: true, isExpected: false, worker.disableRefork: true)
2020-04-04 11:32:08,495 ERROR 6884 nodejs.AppWorkerDiedError: [master] app_worker#1:2000 died (code: 1, signal: null, suicide: false, state: dead), current workers: []
at Master.onAppExit (D:\ReactBlog\react_blog\service\node_modules\egg-cluster\lib\master.js:510:21)
at Master.emit (events.js:311:20)
at Messenger.sendToMaster (D:\ReactBlog\react_blog\service\node_modules\egg-cluster\lib\utils\messenger.js:137:17)
at Messenger.send (D:\ReactBlog\react_blog\service\node_modules\egg-cluster\lib\utils\messenger.js:102:12)
at EventEmitter.<anonymous> (D:\ReactBlog\react_blog\service\node_modules\egg-cluster\lib\master.js:353:22)
at EventEmitter.emit (events.js:323:22)
at ChildProcess.<anonymous> (internal/cluster/master.js:193:13)
at Object.onceWrapper (events.js:418:26)
at ChildProcess.emit (events.js:311:20)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
name: "AppWorkerDiedError"
pid: 6884
hostname: clx
刚开始一直以为是语法问题.找了半天,官网也看了. 同事也问了,后来还是在官网看到了.这个中间件需要写在app/middleware文件夹下.才行… 结果问题就出现在我把包名写成了mindleware了,结果就一直报上面问题.
module.exports = (options,app) =>{
return async function adminauth(ctx,next){
console.log(ctx.session.openId)
if(ctx.session.openId){
await next()
}else{
ctx.body={data:'没有登录'}
}
}
}
router.js下
module.exports = app=>{
const {router,controller}=app
// 声明并引入中间件。
const adminauth = app.middleware.adminauth()
router.get("/admin/index",controller.admin.main.index)
router.post("/admin/checkLogin",controller.admin.main.checkLogin)
// 添加路由守卫
router.get("/admin/getTypeInfo",adminauth,controller.admin.main.getTypeInfo)
}
这样运行是起来是没问题了
主要还是包名问题