Express Bodyparser无法正常工作

时间:2019-08-01 16:11:38

标签: javascript node.js express body-parser

要设置我的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())尝试过,也不起作用。

3 个答案:

答案 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!')
});