Экспресс 4.x bodyparser не работает

Я установил последнюю версию body-parser(1.17.1) и установил свой код в правильном порядке, как предлагали другие.

  1. импортный экспресс

  2. импорт body-parser

  3. app = express ();

  4. app.use (bodyParser.json ());

  5. app.use (bodyParser.urlencoded ({extended: false}));

но я постоянно получаю сообщение об ошибке "Ошибка типа: не удается прочитать свойство" пароль "неопределенного".

На самом деле я не могу себе представить, в чем проблема.

Я потратил почти 10 часов на отслеживание решения, и я почти сдался.

Есть ли способ заставить мой код работать?

Помоги мне, пожалуйста...

ниже мой код

    const express = require('express');
    const path = require('path');
    const session = require('express-session');
    const MySQLStore = require('express-mysql-session')(session);
    const bodyParser = require('body-parser');
    const passport = require('passport');
    const LocalStrategy = require('passport-local').Strategy;
    const pbkdf2Password = require('pbkdf2-password');
    const hasher = pbkdf2Password();
    const mysql = require('mysql');
    const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '10rhrnak',
    database: 'users',
    });
    connection.connect();

    //crawler setting
    const http = require('http');
    const cheerio = require('cheerio');
    const iconv = require('iconv-lite');
    const fs = require('fs');

    const app = express();
    const port = process.env.PORT || '4200';
    app.set('port', port);
    app.listen(port, () => console.log(`API running on localhost:${port}`));

    app.use(express.static(path.join(__dirname, '../dist')));

    app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, '../dist/index.html'));
    });

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(session({
    secret: '@232t2g23',
    resave: false,
    saveUninitialized: true,
    store: new MySQLStore({
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: '10rhrnak',
        database: 'users',
    })
    }));
    app.use(passport.initialize());
    app.use(passport.session());

    app.post('/auth/register', (res, req) => {

        hasher({password: req.body.password}, (err, pass, salt, hash) => {
            let user = {
                authId: 'local'+req.body.email,
                email: req.body.email,
                password: hash,
                salt: salt,
                displayName: req.body.displayName
            };
            let sql = 'INSERT INTO users SET ?';
            connection.query(sql, user, (err, results) => {
                if(err) {
                    console.log(err);
                    throw new Error("register error!");
                } else {
                    req.redirect('/');
                }
            });
        });   
    });

а также мой код переднего плана (HTML-шаблон angular2)

<div class="loginbox">
  <div [hidden]="submitted">
    <header>MAILBOY</header>
    <form ngNoForm action="/auth/register" method="post">
      <input type="text" name="email" id="email" placeholder="이메일 주소"/>
      <input type="password" name="password" id="password" placeholder="비밀번호"/>
      <input type="text" name="displayName" id="displayName" placeholder="사용자 이름"/>
      <button type="submit" class="login">가입</button>
    </form>
  </div> 
</div>

1 ответ

Решение

Вы переключили аргументы для обработчика маршрута:

app.post('/auth/register', (res, req) => { ... });

Которые должны быть:

app.post('/auth/register', (req, res) => { ... });
Другие вопросы по тегам