Mel*_*991 372 middleware node.js express
我正在使用快递4.0,我知道身体解析器已被取出快递核心,我使用推荐的替代品,但我得到了
body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12
body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29
我在哪里可以找到这个假设的中间件?或者我不应该收到此错误?
var express = require('express');
var server = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var passport = require('./config/passport');
var routes = require('./routes');
mongoose.connect('mongodb://localhost/myapp', function(err) {
if(err) throw err;
});
server.set('view engine', 'jade');
server.set('views', __dirname + '/views');
server.use(bodyParser());
server.use(passport.initialize());
// Application Level Routes
routes(server, passport);
server.use(express.static(__dirname + '/public'));
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
Ben*_*une 683
这意味着截至2014-06-19,已弃用bodyParser()
构造函数.
app.use(bodyParser()); //Now deprecated
Run Code Online (Sandbox Code Playgroud)
您现在需要单独调用这些方法
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
Run Code Online (Sandbox Code Playgroud)
等等.
如果您仍然urlencoded
需要使用警告
app.use(bodyParser.urlencoded({
extended: true
}));
Run Code Online (Sandbox Code Playgroud)
在extended
现在的配置对象的关键需要明确的被传递,因为它现在已经没有默认值.
如果您使用Express> = 4.16.0,则已在方法express.json()
和下重新添加了body解析器express.urlencoded()
.
Sri*_*har 183
如果您使用 express > 4.16
,则可以使用express.json()
和express.urlencoded()
在
express.json()
和express.urlencoded()
中间件已被添加到提供请求主体的解析支持外的开箱。这使用expressjs/body-parser
下面的模块模块,因此当前需要单独使用模块的应用程序可以切换到内置解析器。
Source Express 4.16.0 - 发布日期:2017-09-28
有了这个,
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
Run Code Online (Sandbox Code Playgroud)
变成,
const express = require('express');
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
Run Code Online (Sandbox Code Playgroud)
sma*_*ajl 150
想要零警告吗?像这样使用它:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
Run Code Online (Sandbox Code Playgroud)
Explanation:extended
不推荐使用该选项的默认值,这意味着您需要显式传递true或false值.
Pri*_*hvi 35
甚至我也面临同样的问题。我提到的以下更改解决了我的问题。
如果您使用的是Express 4.16+版本,则
app.use(bodyparser.json()); //utilizes the body-parser package
Run Code Online (Sandbox Code Playgroud)
app.use(express.json()); //Used to parse JSON bodies
Run Code Online (Sandbox Code Playgroud)
由于express.json() 中的代码基于 bodyparser.json(),因此这不应在您的应用程序中引入任何破坏性更改。
app.use(bodyParser.urlencoded({extended: true}));
Run Code Online (Sandbox Code Playgroud)
app.use(express.urlencoded()); //Parse URL-encoded bodies
Run Code Online (Sandbox Code Playgroud)
extended
给express.urlencoded()
then,请将上面的代码更新为:app.use(express.urlencoded({ extended: true }));
Run Code Online (Sandbox Code Playgroud)
最后的注意事项:
如果您使用的是 Express 4.16+,您可能不需要将额外的 body-parser 包安装到您的应用程序中。有许多教程包含 body-parser 的安装,因为它们的日期早于 Express 4.16 发布。
Abr*_*ham 16
不要使用正文解析器
如果您使用的快递4.16+你可以做到这一点,就像这跟快递:
app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads
Run Code Online (Sandbox Code Playgroud)
您现在可以使用卸载 body-parser npm uninstall body-parser
要获取 POST 内容,您可以使用 req.body
app.post("/yourpath", (req, res)=>{
var postData = req.body;
//Or if this doesn't work
var postData = JSON.parse(req.body);
});
Run Code Online (Sandbox Code Playgroud)
小智 11
在旧版本的express中,我们不得不使用:
app.use(express.bodyparser());
Run Code Online (Sandbox Code Playgroud)
因为body-parser是node和express之间的中间件.现在我们必须使用它:
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
Run Code Online (Sandbox Code Playgroud)
body-parser是一段快速中间件,它读取表单的输入并将其存储为可通过
req.body
'body-parser' 访问的javascript对象必须安装(vianpm install --save body-parser
)有关详细信息,请参阅:https://github.com/expressjs/body -parser
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
Run Code Online (Sandbox Code Playgroud)
当extended
设置为true时,放气(压缩)的物体将膨胀; 当extended
设置为false时,放气的身体会被拒绝.
而不是bodyParser.json()
,只需使用express.json()
,您不想安装body-parser
例如,
const express = require("express");
const app = express();
app.use(express.json());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
184983 次 |
最近记录: |