2016-09-21 4 views
0

Теперь я читал dussins сообщений stackoverflow, но я не могу заставить своего bodyparser работать. Чтобы не усложнять вещи, я перешел на самую простую вещь, которую я мог себе представить, что является приведенным ниже кодом и включает только разбор одного маршрута. Может ли кто-нибудь увидеть проблему?Не могу получить body-parser, чтобы вернуть что-либо

маршруты/login.js

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'); 
}); 

Переход к/логин, набрав что-либо на входе и представления (вызывая запись в/авторизации) даст использование следующий консольный выход:

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

Так поместите следующий код после создания объекта express в server.js файле

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

 Смежные вопросы

  • Нет связанных вопросов^_^