要设置我的bodyparser,我使用以下代码:
const express = require('express')
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
现在,如果我的快速路由器中具有以下POST路由:
var router = require('express').Router();
router.post('/sendadvertisement', async (req, res) => {
console.log(req.body)
});
结果为[Object: null prototype] {advertisement: 'test'}
->我的req.body
不为空,因为它在控制台输出中为json格式。
我不太了解如何发生此结果,因为我定义了正文应为json格式。
我也用app.use(express.json())
尝试过,也不起作用。
答案 0 :(得分:0)
如果您使用的是 express,那么您可以使用此代码来设置您的正文解析器。
app.use(express.json( {extended:false} ));
app.use(express.urlencoded({extended: false}));
答案 1 :(得分:0)
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
这也报错,提交后页面滚动。
答案 2 :(得分:-1)
我用应用替换了路由器,一切正常。
Router.get / post等仅用于在您安装了app.use('route')
之类的中间软件函数来处理路由之后,定义子路由。如果要使用路由器,则应使用app.use(...)
安装路由,然后使用router.post(...)
另请参阅:Difference Between app.use() and router.use() in Express
const express = require('express')
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.post('/sendadvertisement', async (req, res) => {
console.log(req.body)
});
app.listen(8000, () => {
console.log('Example app listening on port 8000!')
});