我正在尝试学习koa,但无法弄清楚为什么我会出错:
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
答案 0 :(得分:3)
问题的确切含义是:style="display: block; width:100%; text-align:center;"
从文档中
Koa响应对象是节点的普通响应对象之上的抽象
ctx.body is not a function
因此,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
答案 1 :(得分:0)
您知道GET请求没有正文,只有POST请求吗?
答案 2 :(得分:0)
来自koajs/bodyparser
文档
ctx.body
不存在,它是ctx.request.body
返回JSON对象(不是函数)