当前位置: 首页 > 面试题库 >

bodyParser弃用Express 4

禄俊逸
2023-03-14
问题内容

我正在使用Express 4.0,并且我知道主体解析器已从Express核心中移除,我使用的是推荐的替代品,但是我得到了

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);

问题答案:

这意味着自2014年6月19日起,不赞成使用bodyParser()
构造函数

app.use(bodyParser()); //Now deprecated

您现在需要分别调用方法

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等等。

如果仍然收到警告,则urlencoded需要使用

app.use(bodyParser.urlencoded({
  extended: true
}));

extended现在的配置对象的关键需要明确的被传递,因为它现在已经没有默认值。

如果您使用的快递> = 4.16.0,身体解析器已根据这些方法重新加入express.json()express.urlencoded()



 类似资料:
  • 我们可以禁用或覆盖身体解析器后,注入它作为中间件来表达应用程序? 在一个文件(不可编辑,由框架完成)应用程序中。使用(bodyParser.json());出口应用程序; 在另一个文件中,我正在导入应用程序,这里我想为其中一个路由禁用bodyParser。我有办法做到吗?

  • 我使用的是Express4.0并且我知道body parser已经从express内核中删除了,我使用的是推荐的替换,但我得到的却是 我在哪里可以找到这些所谓的中间件?或者我不应该得到这个错误?

  • 当我发送一个json对象时,我想捕获来自body Parser()中间件的错误,它是无效的,因为我想发送一个自定义响应,而不是一个通用的400错误。 这就是我所拥有的,它起作用了: 但在我看来,这是一种非常丑陋的方法,因为我正在比较可能在未来的express版本中更改的错误消息。有没有其他方法可以捕获bodyParser()错误? 编辑: 这是请求正文包含无效json时的错误: 漂亮的打印堆栈:

  • 问题内容: 我是node.js的新手,并表示自己,并且已经尝试了一段时间。现在,我对与解析请求正文有关的快速框架的设计感到困惑。来自快递的官方指南: 设置完所有中间件之后,然后添加要处理的路由: 这种方法的问题在于,在检查路由有效性之前,将首先解析所有请求正文。解析无效请求的主体似乎效率很低。甚至更多,如果我们启用上传处理: 任何客户端都可以通过上传任何文件来轰炸服务器(通过向任何路由/路径发送请

  • 这个问题非常类似于如何禁用ExpressBodyParser进行文件上传(Node.js)。他们提供的答案是针对Express3的,我用更新后的Express4尝试了这个解决方案,但它似乎不起作用。 我正在使用Node.jsExpress构建一个Web应用程序。我正在使用另一个库,BodyParser,来解析后参数。然而,我希望对多部分表单数据POSTS有更细粒度的访问——我需要将输入流管道到另一

  • 问题内容: 在我的应用程序中,我有一些代码来获取中的主机范围。看起来像这样: Xcode一直警告我。但是,我不清楚如何用这些建议替换那些encodingOffsets。有任何想法吗? 问题答案: 一个简单而建立一个正确的方式从是使用它的初始化: 在您的情况下: