【问题标题】:ExpressJS Error: Body-Parser DeprecatedExpressJS 错误:不推荐使用正文解析器
【发布时间】:2015-08-10 09:52:37
【问题描述】:

问题 我正在尝试构建 Node.js API,在编写 server.js 文件时,我的代码如下所示:

var express = require('express');
var express = require('body-parser');

var app = express();
app.use(bodyParser.json());

app.get('/api/posts', function(req,res) {
res.json([
    {
        username: 'oscar',
        body: 'hello'
    }

])
})

app.listen(3000, function() {
console.log('Server Listening on', 3000)
})

但是,在命令提示符下我收到了这个错误:

body-parser deprecated bodyParser: use individual json.urlencoded
middlewares server.js:4:11
body-parser deprecated undefined extended: provide extended option
node_modules\body-parser\index.js:85:29

我尝试将其更改为:

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

app.use(bodyParser.urlencoded({ extended: false }))

就像其他帖子建议的那样,但它仍然给出同样的错误。不知道现在该怎么办!请帮忙。

谢谢!

【问题讨论】:

    标签: node.js express deprecated body-parser


    【解决方案1】:

    除非你有错别字,否则更改:

    var express = require('body-parser');
    
    var app = express();
    app.use(bodyParser.json());
    

    到:

    var bodyParser   = require('body-parser');
    var app = express();
    app.use(bodyParser());
    

    看看请求和响应对象做了什么here

    【讨论】:

      【解决方案2】:
      var app = express();
      
      // configure body-parser
      
      app.use(bodyParser.urlencoded({extended: true}));
      app.use(bodyParser.json());
      

      【讨论】:

        【解决方案3】:

        我有类似的已弃用警告。这是我的原始代码:

        var express = require('express');
        var bodyParser = require('body-parser');
        
        var app = express();
        
        app.use(bodyParser.json());
        app.use(bodyParser.urlencoded());
        

        添加 {extended: true} 为我修复了警告。这是更改的代码:

        var express = require('express');
        var bodyParser = require('body-parser');
        
        var app = express();
        
        app.use(bodyParser.json());
        app.use(bodyParser.urlencoded({extended: true}));
        

        【讨论】:

          【解决方案4】:

          你实际上并不需要app.use(bodyParser.urlencoded({extended: true}));这一行

          我已经让它与以下代码一起工作:

          var express = require('express');
          var bodyParser = require('body-parser');
          
          var app = express();
          
          app.use(bodyParser.json());
          

          您拥有app.user(bodyParser.json()); 的日志,您应该不会收到错误消息。

          【讨论】:

            【解决方案5】:

            在当前 express.js 版本(≥ 4.16)中,您不再需要 body-parser 模块。

            改为使用 express 中已经包含的 json 解析器:

            app.use(express.json())
            

            来源:https://expressjs.com/en/changelog/4x.html#4.16.0

            【讨论】:

              【解决方案6】:

              不要使用正文解析器

              在新版本的 express 中,正文解析现在是内置的。所以,你可以简单地使用

              app.use(express.json()) //For JSON requests
              app.use(express.urlencoded({extended: true}));
              

              从直接快递

              你可以使用npm uninstall body-parser卸载body-parser



              那么你就可以简单的从req.body获取POST内容了

              app.post("/yourpath", (req, res)=>{
              
                  var postData = req.body;
              
                  //Or for string JSON body, you can use this
              
                  var postData = JSON.parse(req.body);
              });
              

              【讨论】:

                猜你喜欢
                • 2023-03-22
                • 2021-10-04
                • 1970-01-01
                • 1970-01-01
                • 2013-11-03
                • 2012-08-03
                • 1970-01-01
                • 2014-11-04
                • 1970-01-01
                相关资源
                最近更新 更多