关于node.js:express4版本中的bodyParser已被弃用报错解决方案

5次阅读

共计 1565 个字符,预计需要花费 4 分钟才能阅读完成。

问题形容

应用 node 中的 express 框架搭建好后端服务当前,须要接管相应的 get、post、put、delete 申请等。对于 post 申请接参数,以前的时候,咱们是下载 body-parser 插件包解析,而后在 post 申请的申请体 req.body 中就能拿到相应申请参数了。然而当初搭建 express 我的项目咱们会发现,竟然报错了,说 bodyParser 被弃用了,报错图如下:

报错截图

报错起因

咱们晓得 bodyParser 插件包能将表单里的数据格式化,不便咱们取参,在 express4 版本之前,都是以 npm 包的模式应用,想要应用 bodyParser 须要 npm 下载对应包,而后 require 引入包应用即可。然而设计 express 的大佬们发现 bodyParser 使用量很高、而且源代码优质简洁,所以罗唆就把 bodyParser 的源代码退出到 express 的源代码中去了,集成当前,开发者就能够摈弃以前的形式,应用新的形式,这样的话,更加方便快捷。

原来的写法

const express = require('express');
const app = express();

var bodyParser = require('body-parser');// 须要 npm 下载并引入 bodyParser 的包,能力失去 post 申请的参数
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

app.get('/', (req, res)=>{res.send('Hello world');
});
app.post('/postTest', (req, res)=>{console.log('post 申请体传参',req.body);
    res.send('post 申请测试');
});
app.listen(8083, ()=>{console.log('服务启动中')
})

当初的写法

const express = require('express');
const app= express();

app.use(express.urlencoded({extended: false})); // 当初就不便多了,express 的两个办法一执行就行啦
app.use(express.json());

app.get('/', (req, res)=>{res.send('Hello world');
});
app.post('/postTest', (req, res)=>{console.log('post 申请体传参',req.body);
    res.send('post 申请测试');
});

app.listen(8083, ()=>{console.log('服务启动中')
})

总结

比照一下 原来的写法 的第三行、第四行、第五行的,和 当初的写法 第三行、第四行,咱们就能够显著看出,express4 版本当前当初的写法更加简洁。

留神:app.use(express.urlencoded({extended: false}))app.use(express.json()) 这两个语句,要放在 express 实例对象挂载 url 路由之前,就是放在 app.get()、app.post() 之前。失常状况下,node 我的项目中 url 路由都是模块化拆分解决,所以就是要放在 app.use(allRouter) 之前。就是解析 post 申请参数的两个语句的地位优先级比拟高。

另外说一下,尽管咱们的编辑器(vscode)会提醒这样的 body-parser 被弃用的相干文字介绍,然而,实际上,在 express4 版本中 npm 装置 bodyparser 包也是能够应用的,也是可能接管到 post 申请中的参数的,然而,咱们还是依照最新的写法来会好些 …

正文完
 0