无法发布/注册

时间:2019-09-17 04:42:12

标签: html node.js express

我正在构建我的第一个node.js应用程序,并从身份验证开始。到目前为止,太好了,但是我似乎无法张贴表格。

我今天花费了大量时间试图弄清楚为什么它不会发布。我想我只是不了解我的代码有什么问题,我希望有人可以看看并指出它有什么问题,所以它如下...

我的app.js看起来像这样...

const express = require('express');
      http = require('http');
      path = require('path');
      session = require('express-session');
      app = express();
      mysql      = require('mysql');
      bodyParser = require('body-parser');
      db = require(__dirname, 'models/db')

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

app.use('/', index);
app.use('/register', register);

var engine = require('ejs-mate');
app.engine('ejs', engine);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));


var server = http.createServer(app);

var port = 8995;
server.listen(port);

module.exports = app;

我的register.js看起来像这样...

var express = require('express');
var router = express.Router();
var db = require(__dirname, 'models/db');
var bodyParser = require('body-parser');

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

app.use(bodyParser.json());


router.get('/', function(req, res, next) {
  res.render('register', { title: 'Register for a free account' });
});

router.post('/register', function(req, res) {
  var input = JSON.parse(JSON.stringify(req.body));
  var today = new Date();
  var users = {
    "first_name":req.body.first_name,
    "last_name":req.body.last_name,
    "email":req.body.email,
    "password":req.body.password,
    "username": req.body.username,
    "created":today,
    "modified":today
  };
  db.getConnection(function(err, connection) {
    connection.query('INSERT INTO users SET ? ', users, function(err, result) {
    connection.release();
    if (err) { return console.error(err); }
    });
  });
  res.redirect('/index');
});
module.exports = router;

最后,我的register.ejs看起来像这样...

<% layout("/layouts/default") -%>
<div class="signup-form">
    <form method="post" action="/register" class="form-horizontal">
        <div class="col-xs-8 col-xs-offset-4">
            <h2>Sign Up</h2>
        </div>
        <div class="form-group">
            <label class="control-label col-xs-4">Username</label>
            <div class="col-xs-8">
                <input type="text" class="form-control" name="username" required="required">
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-xs-4">Email Address</label>
            <div class="col-xs-8">
                <input type="email" class="form-control" name="email" required="required">
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-xs-4">Password</label>
            <div class="col-xs-8">
                <input type="password" class="form-control" name="password" required="required">
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-xs-4">Confirm Password</label>
            <div class="col-xs-8">
                <input type="password" class="form-control" name="confirm_password" required="required">
            </div>
        </div>
        <div class="form-group">
            <div class="col-xs-8 col-xs-offset-4">
                <button type="submit" class="btn btn-primary btn-lg">Sign Up</button>
            </div>
        </div>
    </form>
    <div class="text-center">Already have an account? <a href="/">Login here</a></div>
</div>

当我尝试提交表单时,我不明白为什么会出现错误CAN POST / register的错误,因为我在我的app.post中指定了发布路线(“ / register”)。

1 个答案:

答案 0 :(得分:1)

您已添加注册路由器以绑定到“ / register”链接...,因此路由寄存器中的所有链接都必须以/ register /开头。 如果您尝试发布/ register / register,它将起作用

app.use(‘/‘, register)

会工作