Теперь я читал 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'
};
Вы должны уточнить, что происходит. Продемонстрируйте, что код делает иначе, чем вы ожидаете, до – nem035
ли ваша консоль отображает ожидаемый результат в командной строке? – Beginner
... или [работает на порту 80] (http://stackoverflow.com/questions/18947356/node-js-app-cant-run-on-port-80-even-though-theres-no-other -process-blocking-t) проблема? – nem035