Tidak dapat POST formulir node.js - ekspres

Menggunakan express 3.1.0 Saya memiliki formulir super sederhana:

<form action="/signup" method="post">
    <div>
        <label>Username:</label>
        <input type="text" name="username"/><br/>
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password"/>
    </div>
    <div><input type="submit" value="Sign Up"/></div>
</form>

dan di app.js:

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes')
  , fs = require('fs')
  , User = require('./models/User.js')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/form', function(req, res) {
    fs.readFile('./form.html', function(error, content) {
        if (error) {
            res.writeHead(500);
            res.end();
        }
        else {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(content, 'utf-8');
        }
    });
});

app.post('/signup', function(req, res) {

    var username = req.body.username;
    var password = req.body.password;
    User.addUser(username, password, function(err, user) {
        if (err) throw err;
        res.redirect('/form');
    });
});

app.get('/users', user.list);


http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

ketika mencoba memposting formulir ini saya mendapatkan:

Cannot POST /signup

dan di konsol:

"NetworkError: 404 Not Found - http://localhost:3000/signup"

Apa yang kulewatkan di sini?


person baba-dev    schedule 15.02.2013    source sumber


Jawaban (3)


Teladan Anda berhasil untuk saya. Saya menghapus referensi ke Pengguna, pengguna, dan rute sehingga saya dapat menjalankannya dan HTTP POST diterima dan ditampilkan dengan benar di konsol.

app.post('/signup', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    console.log("post received: %s %s", username, password);
});

Saya menduga kesalahannya ada pada kode User.addUser() Anda.

person Hector Correa    schedule 15.02.2013
comment
Setelah membuang waktu lebih dari 6 jam, akhirnya menemukan solusi yang saya cari. Terima kasih - person Toretto; 16.01.2015
comment
@ baba-dev jadi apa masalahnya? - person grantwparks; 27.11.2018

Anda dapat menulis sesuatu seperti ini:

action="http://localhost:3000/sin"
person sansan    schedule 09.12.2013

person    schedule
comment
Cobalah untuk menjelaskan kodenya daripada hanya mempostingnya. Apa fungsinya? Bagaimana atau di mana Anda menyelesaikan pertanyaan TC dengannya? - person Nahuel Ianni; 05.11.2014
comment
@NahuelIanni terima kasih. :) sebenarnya saya baru saja menulis bagian di mana dia mendapatkan kesalahan. - person salangkar acharya; 16.11.2014