gpt4 book ai didi

javascript - 尝试使用 koa bodyparser 和 ctx.body undefined

转载 作者:行者123 更新时间:2023-11-30 09:15:21 26 4
gpt4 key购买 nike

我正在尝试学习 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

最佳答案

正是问题所在:ctx.body 不是函数

来自文档:

A Koa Response object is an abstraction on top of node's vanilla response object

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' };
}

关于javascript - 尝试使用 koa bodyparser 和 ctx.body undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55507872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com