Express 서버의 구성으로 이것을 가지고 있습니다
app.use(app.router);
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat" }));
app.set('view engine', 'ejs');
app.set("view options", { layout: true });
//Handles post requests
app.use(express.bodyParser());
//Handles put requests
app.use(express.methodOverride());
그러나 여전히 req.body.something
경로에서 요청할 때이를 가리키는 오류가 발생합니다 body is undefined
. 다음은 다음을 사용하는 경로의 예입니다 req.body
.
app.post('/admin', function(req, res){
console.log(req.body.name);
});
나는이 문제가 부족하기 때문에 발생한다는 것을 읽었 app.use(express.bodyParser());
지만 알 수 있듯이 경로 전에 호출합니다.
실마리?
답변
경로를 정의하기 전에 모든 구성을 정의해야합니다. 그렇게하면 계속 사용할 수 있습니다 express.bodyParser()
.
예를 들면 다음과 같습니다.
var express = require('express'),
app = express(),
port = parseInt(process.env.PORT, 10) || 8080;
app.configure(function(){
app.use(express.bodyParser());
app.use(app.router);
});
app.listen(port);
app.post("/someRoute", function(req, res) {
console.log(req.body);
res.send({ status: 'SUCCESS' });
});
답변
최신 버전의 Express (4.x)는 핵심 프레임 워크에서 미들웨어를 번들 해제했습니다. 본문 파서가 필요한 경우 별도로 설치해야합니다.
npm install body-parser --save
그런 다음 코드 에서이 작업을 수행하십시오.
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
답변
아니요 . app.use(express.bodyParser())
전에 사용해야 app.use(app.router)
합니다. 실제로 app.use(app.router)
마지막으로 전화해야합니다.
답변
먼저 다음을 호출하여 ‘body-parser’라는 npm 모듈을 설치했는지 확인하십시오.
npm install body-parser --save
그런 다음 경로를 호출하기 전에 다음 줄을 포함했는지 확인하십시오
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
답변
Express 4에는 바디 파서가 내장되어 있습니다. 별도의 본문 파서를 설치할 필요가 없습니다. 아래는 작동합니다.
export const app = express();
app.use(express.json());
답변
요청 헤더의 Content-Type은 특히 curl 또는 다른 도구에서 데이터를 게시 할 때 매우 중요합니다.
application / x-www-form-urlencoded, application / json 또는 기타와 같은 것을 사용하고 있는지 확인하십시오. 게시 데이터에 따라 다릅니다. 이 필드를 비워두면 Express가 혼동됩니다.
답변
한 의견 아래 이미 게시 된 것처럼 나는 그것을 사용하여 해결했다.
app.use(require('connect').bodyParser());
대신에
app.use(express.bodyParser());
나는 왜 단순한 express.bodyParser()
것이 작동 하지 않는지 여전히 모른다 …