3-3中间件编写demo时无法解决的错误
来源:3-3 Koa中间件

慕粉3624324
2019-05-24
老师:在我在按您的demo编码后,点击浏览器发生报错,把代码把您的粘过来也同样解决不了,请帮忙看看!以下是错误信息及代码
npm run dev
> koa2-learn@0.1.0 dev /Library/WebServer/Documents/project/vue/koa2-learn
> nodemon bin/www
[nodemon] 1.19.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node bin/www`
server error TypeError: Cannot read property 'count' of undefined
at pv (/Library/WebServer/Documents/project/vue/koa2-learn/middleware/pv.js:2:9)
at /Library/WebServer/Documents/project/vue/koa2-learn/middleware/pv.js:8:9
at dispatch (/Library/WebServer/Documents/project/vue/koa2-learn/node_modules/koa-compose/index.js:42:32)
at parseBody.then.body (/Library/WebServer/Documents/project/vue/koa2-learn/node_modules/koa-bodyparser/index.js:74:14)
at processTicksAndRejections (internal/process/task_queues.js:86:5) { request:
{ method: 'GET',
url: '/',
header:
{ host: 'localhost:3000',
connection: 'keep-alive',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent':
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
accept:
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
cookie: 'Webstorm-ecd841cd=0955b405-6973-455e-8243-991c86bd6ac1' } },
response:
{ status: 404,
message: 'Not Found',
header: [Object: null prototype] {} },
app: { subdomainOffset: 2, proxy: false, env: 'development' },
originalUrl: '/',
req: '<original node req>',
res: '<original node res>',
socket: '<original node socket>' }
以下为浏览器错误信息:
Error
Looks like something broke!
TypeError: Cannot read property 'count' of undefined
at pvaaa (/Library/WebServer/Documents/project/vue/koa2-learn/middleware/pvaaa.js:2:9)
at /Library/WebServer/Documents/project/vue/koa2-learn/middleware/pvaaa.js:8:9
at dispatch (/Library/WebServer/Documents/project/vue/koa2-learn/node_modules/koa-compose/index.js:42:32)
at parseBody.then.body (/Library/WebServer/Documents/project/vue/koa2-learn/node_modules/koa-bodyparser/index.js:74:14)
at processTicksAndRejections (internal/process/task_queues.js:86:5)
app.js:
const Koa = require('koa')
const app = new Koa()
const views = require('koa-views')
const json = require('koa-json')
const onerror = require('koa-onerror')
const bodyparser = require('koa-bodyparser')
const logger = require('koa-logger')
const pvaaa = require('./middleware/pvaaa')
const index = require('./routes/index')
const users = require('./routes/users')
// error handler
onerror(app)
// middlewares
app.use(bodyparser({
enableTypes:['json', 'form', 'text']
}))
app.use(pvaaa())
app.use(json())
app.use(logger())
app.use(require('koa-static')(__dirname + '/public'))
app.use(views(__dirname + '/views', {
extension: 'ejs'
}))
// logger
app.use(async (ctx, next) => {
const start = new Date()
await next()
const ms = new Date() - start
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})
// routes
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
// error-handling
app.on('error', (err, ctx) => {
console.error('server error', err, ctx)
});
module.exports = app
./middleware/pvaaa.js:
function pvaaa(ctx){
ctx.session.count++
global.console.log('pvaaa',ctx.path)
}
module.exports=function(){
return async function(ctx,next){
pvaaa(ctx)
await next()
}
}
写回答
1回答
-
同学你要学会调试,你的报错是说 count of undefined,那你要排查什么地方在调用这个count,显然是 ctx.session.count,也就是说ctx.session是undefined,那session的插件你都正确安装了吗,这不就一步一步找到地方了吗,自己尝试一下
012019-05-29
相似问题