我正在努力学习考拉,却弄不明白为什么我会犯这个错误:
server error TypeError: ctx.body is not a function
at getHandler (/Users/tomcaflisch/Sites/learn-koa/server.js:32:7)当我运行这段代码时:
'use strict'
const Router = require('koa-router')
const bodyParser = require('koa-bodyparser')
function server (app) {
const router = new Router()
router.get('/foo', getHandler)
app.use(bodyParser())
app.use(router.routes())
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || 500;
ctx.body = err.message;
ctx.app.emit('error', err, ctx);
}
});
app.on('error', (err, ctx) => {
console.log('server error', err, ctx)
});
app.listen(4000)
}
function getHandler (ctx, next) {
// ctx.set('Location', 'http://localhost:3000/foo')
ctx.body({ foo: 'bar' })
}
module.exports = server发布于 2019-04-09 16:30:42
这正是问题所在:ctx.body is not a function
从医生那里:
Koa响应对象是节点的普通响应对象之上的抽象
Response aliases
The following accessors and alias Response equivalents:
ctx.body
ctx.body=因此,从本质上说,ctx.body是一个对象,您可以将要发送的东西作为响应分配给它。
如果您查看Hello World示例,响应只分配给Response对象,然后koa发送该对象。
app.use(async ctx => {
ctx.body = 'Hello World';
});因此,将代码更改为下面的代码将响应体用作json
function getHandler (ctx, next) {
// ctx.set('Location', 'http://localhost:3000/foo')
ctx.body = { foo: 'bar' };
}发布于 2019-04-04 07:48:27
你知道吗,得到请求没有身体,只有帖子请求做什么?
发布于 2019-04-08 01:01:42
来自koajs/bodyparser文档
ctx.body不存在,它是ctx.request.body返回JSON对象(不是函数)
https://stackoverflow.com/questions/55507872
复制相似问题