Programming

bodyParser는 더 이상 사용되지 않습니다. express 4

procodes 2020. 2. 27. 22:28
반응형

bodyParser는 더 이상 사용되지 않습니다. express 4


Express 4.0을 사용하고 있으며 본문 구문 분석기가 Express Core에서 제거되었으며 권장 교체를 사용하고 있지만

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-06-19 기준으로 bodyParser() 생성자 를 사용하는 것이 더 이상 사용되지 않음을 의미합니다 .

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

이제 메소드를 개별적으로 호출해야합니다.

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

등등.

그래도 경고 메시지가 나타나면 urlencoded사용해야합니다

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

extended구성 객체 키가 지금 기본값이 없기 때문에 명시 적으로 전달 될 필요가있다.

Express> = 4.16.0을 사용하는 경우 express.json()방법 아래에 본문 구문 분석기가 다시 추가되었습니다 express.urlencoded().


제로 경고를 원하십니까 ? 다음과 같이 사용하십시오.

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

설명 : extended옵션 의 기본값 이 더 이상 사용되지 않으므로 명시 적으로 true 또는 false 값을 전달해야합니다.


이전 버전의 express에서는 다음을 사용해야했습니다.

app.use(express.bodyparser()); 

body-parser는 node와 express 사이의 미들웨어이기 때문에. 이제 다음과 같이 사용해야합니다.

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

body-parser는 폼의 입력을 읽고 req.body'body-parser'를 통해 액세스 할 수있는 자바 스크립트 객체로 저장하는 Express 미들웨어의 한 부분입니다 (를 통해 설치해야 함 npm install --save body-parser) 자세한 내용은 https://github.com/expressjs/body를 참조하십시오. 파서

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

extendedtrue로 설정 되면 수축 된 (압축 된) 몸체가 팽창됩니다. extendedfalse로 설정되어, 수축 몸이 거부됩니다.


나는 추가하는 동안 그것을 발견

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

때로는 익스프레스가 처리하는 방법을 결정하는 것이 쿼리 문제입니다.

예를 들어 매개 변수가 본문이 아닌 URL 로 전달 될 수 있습니다.

이 경우 bodyurl 매개 변수를 모두 캡처 하고 사용 가능한 매개 변수를 사용해야합니다 (아래의 경우 body 매개 변수를 선호 함).

app.route('/echo')
    .all((req,res)=>{
        let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
        res.send(pars);
    });

Express 생성기를 사용하는 것에 대한 의견은 무엇입니까? without deprecated messages로그에서 시작되는 기본 프로젝트를 생성 합니다.

이 명령을 실행

npm install express-generator -g

이제이 명령을 입력하여 새 Express.js 시작 응용 프로그램을 작성하십시오 your Node projects folder.

express node-express-app

이 명령은 express가 이름을 가진 새로운 Node.js 애플리케이션을 생성하도록 지시합니다 node-express-app.

다음 Go to the newly created project directory, install npm packages그리고 start the app명령을 사용하여

cd node-express-app && npm install && npm start

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

나는 같은 문제가 있지만 이것은 나를 위해 일한다. 이 확장 부분을 시도해 볼 수 있습니다.

참고 URL : https://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4



반응형