1

When i try to request form information to set var there is a TypeError

NodeJS server on VS Code

This is my app.js code (not full)

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var exphbs = require('express-handlebars');
var expressValidator = require('express-validator');
var bodyParser = require('body-parser');
var flash = require('connect-flash');
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local'),Strategy;
var mongo = require('mongodb');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/loginapp', { useNewUrlParser: true });
var db = mongoose.connection;

var routes = require('./routes/index');
var users = require('./routes/users');

// APP INIT
var app = express();

// VIEW ENGINE
app.set('views', path.join(__dirname,'views'));
app.engine('handlebars', exphbs({ defaultLayout:'layout' }));
app.set('view engine','handlebars');

// BODYPARSER
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended:false }));
app.use(cookieParser());

app.use('/', routes);
app.use('/users', users);

users.js file

var express = require('express');
var router = express.Router();

// REGISTER
router.get('/register', (req, res) => {
    res.render('register');
});

// LOGIN
router.get('/login', (req, res) => {
    res.render('login');
});

// REGISTER
router.post('/register', (req, res) => {
    var name = req.body.name;
    console.log(name);
});

module.exports = router;

Register file (.handlebars html)

<h2 class="page-header">Register</h2>
<form method="post" action="/users/register">
    <div class="form-group">
        <label>Name</label>
        <input type="text" class="form-control" placeholder="Name" name="name">
    </div>
    <div class="form-group">
        <label>Username</label>
        <input type="text" class="form-control" placeholder="Username" name="username">
    </div>
    <div class="form-group">
        <label>Email</label>
        <input type="email" class="form-control" placeholder="Email" name="email">
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" class="form-control" placeholder="Password" name="password">
    </div>
    <div class="form-group">
        <label>Confirm Password</label>
        <input type="password" class="form-control" placeholder="Password" name="password2">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>

And when i try to submit the error happen.

TypeError: Cannot read property 'name' of undefined at router.post (C:\Users\Corentin\Documents\loginapp\routes\users.js:16:25) at Layer.handle [as handle_request] (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\layer.js:95:5) at C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:335:12) at next (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:275:10) at Function.handle (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:174:3) at router (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:47:12) at Layer.handle [as handle_request] (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:317:13) at C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:284:7 at Function.process_params (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:335:12) at next (C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:275:10) at C:\Users\Corentin\Documents\loginapp\node_modules\express\lib\router\index.js:635:15

Thanks a lot for peoples helping me, i spent to much hours with this problem

Corentinrce
  • 161
  • 1
  • 2
  • 7
  • 4
    Possible duplicate of [How to process POST data in Node.js?](https://stackoverflow.com/questions/4295782/how-to-process-post-data-in-node-js) – Randy Casburn Jan 31 '19 at 17:09
  • Thanks a lot ! i need to var bodyparser in the users.js file, for any people has the same problem – Corentinrce Jan 31 '19 at 17:31
  • It seems to be saying that name is not a property of req.body, which is part of the lamda function you pass to router.post – Martin Jan 31 '19 at 17:35

0 Answers0