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);
즉, 다음을 사용합니다.bodyParser() 2014-06-19 시점에서 생성자가 더 이상 사용되지 않습니다.
app.use(bodyParser()); //Now deprecated
이제 메소드를 별도로 호출해야 합니다.
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
등등.
여전히 경고가표경는우되시계속▁with로 경고를 .urlencoded당신은 야합사다니해를.
app.use(bodyParser.urlencoded({
extended: true
}));
그extended이제 기본값이 없으므로 구성 개체 키를 명시적으로 전달해야 합니다.
, 가 Express > = 4.16.0의 되었습니다.express.json()그리고.express.urlencoded().
경고 0개를 원하십니까?다음과 같이 사용합니다.
// Express v4.16.0 and higher
// --------------------------
const express = require('express');
app.use(express.json());
app.use(express.urlencoded({
extended: true
}));
// For Express version less than 4.16.0
// ------------------------------------
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
설명:의 기본값extended옵션이 더 이상 사용되지 않습니다. 즉, true 또는 false 값을 명시적으로 전달해야 합니다.
Express 4.16.0 이상 버전에 대한 참고: 요청 본문 구문 분석 지원을 즉시 제공하기 위해 본문 구문 분석기가 다시 추가되었습니다.
> 를 익스프레스사는경우하용를 >4.16사용할 수 있습니다.express.json()그리고.express.urlencoded()
그
express.json()그리고.express.urlencoded()요청 본문 구문 분석 지원을 즉시 제공하기 위해 미들웨어가 추가되었습니다.이것은 아래의 모듈 모듈을 사용하므로 현재 모듈이 별도로 필요한 앱은 내장 파서로 전환할 수 있습니다.
원천 Express 4.16.0 - 출시일: 2017-09-28
이와 함께.
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
된다,
const express = require('express');
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
바디 파서 사용 안 함
Express 4.16+를 사용하는 경우 express:
app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads
이다음을사본파문제수있거다습니를 사용하여 본문 를 제거할 수 .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);
});
이것이 도움이 되길 바랍니다.
저도 같은 문제에 직면했습니다.제가 언급한 아래의 변경은 제 문제를 해결했습니다.
Express 4.16+ 버전을 사용하는 경우
- 코드에 다음과 같은 행을 추가했을 수 있습니다.
app.use(bodyparser.json()); //utilizes the body-parser package
- 이제 위의 줄을 다음으로 바꿀 수 있습니다.
app.use(express.json()); //Used to parse JSON bodies
express.json()의 코드는 bodyparser.json()을 기반으로 하기 때문에 응용 프로그램에 중단된 변경 사항이 발생하지 않습니다.
- 사용자 환경에 다음 코드도 있는 경우:
app.use(bodyParser.urlencoded({extended: true}));
- 위의 줄을 다음으로 바꿀 수 있습니다.
app.use(express.urlencoded()); //Parse URL-encoded bodies
- ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
extendedexpress.urlencoded()그런 다음 위의 코드를 다음과 같이 업데이트합니다.
app.use(express.urlencoded({ extended: true }));
마지막 주의 사항:
Express 4.16+를 사용하는 경우 응용 프로그램에 추가 본문 파서 패키지를 설치할 필요가 없을 수 있습니다.Express 4.16 릴리스 이전의 날짜이기 때문에 본문 파서 설치를 포함하는 많은 튜토리얼이 있습니다.
이전 버전의 익스프레스에서는 다음을 사용해야 했습니다.
app.use(express.bodyparser());
바디 파서는 노드와 익스프레스 사이의 미들웨어였기 때문입니다.이제 다음과 같이 사용해야 합니다.
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
입니다.
req.body('body-parser'를 통해).npm 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
때extendedtrue로 몸체가. true인 경우에는 공기가 빠집니다.extendedfalse로 설정되며 공기가 빠진 차체는 거부됩니다.
에 에.bodyParser.json() 순한사용을 사용합니다.express.json()설치하지body-parser
예를 들면,
const express = require("express");
const app = express();
app.use(express.json());
를 추가하는 동안 발견했습니다.
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
도움이 됩니다. 때로는 express에서 처리하는 방법을 결정하는 쿼리의 문제이기도 합니다.
예를 들어 매개 변수가 본문이 아닌 URL로 전달될 수 있습니다.
이러한 경우 본문 및 url 매개 변수를 모두 캡처하고 사용 가능한 것을 사용해야 합니다(아래의 경우 본문 매개 변수에 대한 기본 설정).
app.route('/echo')
.all((req,res)=>{
let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
res.send(pars);
});
하십니까? 그것은 시작할 골격 프로젝트를 생성할 것입니다.without deprecated messages에 되었습니다.
이 명령 실행
npm install express-generator -g
"Express.js"에 이 하여 새 프로그램을 .your Node projects folder.
express node-express-app
이 Node. 프로그램의 .js인 새 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
body-parser 사용되지 않는 bodyParser: 개별 json/url 인코딩 미들웨어 node_modules\express\lib\router\layer.js:95:5
express deprecommitted req.host: node_modules\body-parser\index.js:100:29 대신 req.hostname을 사용합니다.
body-parser 사용되지 않는 정의되지 않은 확장: 확장 옵션 node_provider\body-parser\index.js:105:29
익스프레스 또는 바디 파서를 업데이트할 필요 없음
이러한 오류는 제거됩니다.다음 단계를 수행합니다.
- app.use(bodyParser.urlencoded({extended: true}); // 이것은 인코딩에 도움이 됩니다.
- app.use(bodyParser.json(); // json 형식을 지원합니다.
실행됩니다.
해피 코딩!
다음 답변을 확인하십시오. Stripe webhook 오류: 페이로드에 필요한 서명과 일치하는 서명을 찾을 수 없습니다.
// Use JSON parser for all non-webhook routes
app.use((req, res, next) => {
if (req.originalUrl === '/webhook') {
next();
} else {
express.json()(req, res, next);
}
});
// Stripe requires the raw body to construct the event
app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
const sig = req.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(req.body, sig, webhookSecret);
} catch (err) {
// On error, log and return the error message
console.log(`❌ Error message: ${err.message}`);
return res.status(400).send(`Webhook Error: ${err.message}`);
}
// Successfully constructed event
console.log('✅ Success:', event.id);
// Return a response to acknowledge receipt of the event
res.json({received: true});
});
제 경우에는 typescript + vs 코드가 더 이상 사용되지 않는 것으로 잘못 표시되었습니다.
하지만 소스 코드를 확인하면:
/** @deprecated */
declare function bodyParser(
options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;
declare namespace bodyParser {
네임스페이스가 아니라 생성자여야 합니다.그래서 typescript나 vs code 중 하나가 잘못 알고 있습니다.좋아요, 이 경우에는 비난이 일어나지 않습니다.bodyParser네임스페이스=로
언급URL : https://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4
'programing' 카테고리의 다른 글
| Git의 루트 커밋 앞에 커밋을 삽입하시겠습니까? (0) | 2023.06.03 |
|---|---|
| C#에서 URL에 대한 쿼리 문자열을 작성하는 방법은 무엇입니까? (0) | 2023.06.03 |
| Ruby on Rails를 사용하여 HTTP 요청을 작성하는 방법은 무엇입니까? (0) | 2023.06.03 |
| .ipa를 내보내는 Xcode 6 베타 2 문제: "당신의 계정은 이미 유효한 iOS 배포 인증서를 가지고 있습니다." (0) | 2023.06.03 |
| 사용자 지정 특성 정의 (0) | 2023.06.03 |