2016-09-21 2 views
0

지금 나는 stackoverflow 게시물의 dussins를 읽었지만 내 bodyparser는 작동하지 않습니다. 사물을 복잡하게 만들지 않기 위해 나는 상상할 수있는 가장 간단한 것으로 바꿨다. 아래 코드는 하나의 단일 경로를 파싱하는 것을 포함한다. 누구든지 문제를 볼 수 있습니까?body-parser에서 아무 것도 반환하지 않음

노선/

var express = require('express'); 
var router = express.Router(); 
var bodyParser = require('body-parser'); 

router.get('/', (req, res) => { 
     res.send('<form method="POST" action="'+ req.originalUrl +'"><input type="text" id="personalNumber" autocomplete="off"><input type="submit" value="Log in"></form>'); 
     res.end(); 
}); 

router.post('/', bodyParser.urlencoded({ extended: false }), (req, res) => { 
     console.log('personal', req.body, req.personalNumber, res.body, req.headers); 
     res.send('personal', req.body, req.personalNumber, res.body, JSON.stringify(req.headers)); 
     res.end(); 
}); 

module.exports = router; 

server.js이

var express = require('express'); 
var app = express(); 

var login = require(__dirname + '/routes/login'); 
app.use('/login', login); 

app.listen(80,() => { 
     console.log('Listening on port 80'); 
}); 

사용을 줄 것이다 입력에 아무것도 입력하고 (/ 로그인에 게시물을 트리거) 제출에/로그인가는 단순화 login.js 다음 콘솔 출력 :

Listening on port 80 
personal {} undefined undefined { host: 'localhost', 
    connection: 'keep-alive', 
    'content-length': '0', 
    pragma: 'no-cache', 
    'cache-control': 'no-cache', 
    origin: 'http://localhost', 
    'upgrade-insecure-requests': '1', 
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 
    'content-type': 'application/x-www-form-urlencoded', 
    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
    referer: 'http://localhost/login', 
    'accept-encoding': 'gzip, deflate', 
    'accept-language': 'en-US,en;q=0.8,sv;q=0.6' } 

예상 출력에는 req.body가 포함되어야합니다. 내 양식의 데이터에 대한 정보.

req.body = { 
    personalNumber: 'inputData' 
}; 
+0

무슨 일이 일어나고 있는지 좀 더 구체적으로 밝혀야합니다. – nem035

+0

에 코드가 예상하는 것보다 다르게 코드를 실행하면 명령 프롬프트에 예상 결과가 표시됩니까? – Beginner

+0

... 또는 [포트 80에서 실행 중] (http://stackoverflow.com/questions/18947356/node-js-app-cant-run-on-port-80-even-though-theres-no-other -process-blocking-t) 문제가 있습니까? – nem035

답변

1

body-parser 작품을 제대로은 routes

그래서 server.js 파일에 express의 객체를 생성 한 후 다음 코드를 넣어 모든 전에 주요 파일에 추가 될 때

var app = express(); 

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

슬프게도 작동하지 않습니다. 같은 결과. – user5018460

0
var express = require('express'); 
    var router = express.Router(); 
    var bodyParser = require('body-parser'); 
    router.urlencoded({ extended: false }); 
    router.use(bodyParser.json()); 
    router.get('/', (req, res) => { 
      res.send('<form method="POST" action="'+ req.originalUrl +'"><input type="text" id="username" autocomplete="off"><input type="submit" value="Log in"></form>'); 
      res.end(); 
    }); 

    router.post('/', (req, res) => { 
      console.log('personal', req.body, req.personalNumber, res.body, req.headers); 
      res.send('personal', req.body, req.personalNumber, res.body, JSON.stringify(req.headers)); 
      res.end(); 
    }); 

    module.exports = router; 

시도해보십시오. 작동 할 수도 있습니다.

+0

슬프게도 작동하지 않습니다. 같은 결과. – user5018460