【问题标题】:Node.js / Express / Jade POST form 404sNode.js / Express / Jade POST 表单 404s
【发布时间】:2014-10-24 02:33:01
【问题描述】:

所以,我是 Javascript 的新手(以及一般的编码)。为了补充我对 Javascript 的教育,我想我会玩弄 Node.js。我想我需要一个项目,我想我会尝试制作一个龙与地下城的角色创造者。已经有一些了,但我需要一个项目,对吧?

所以我制作了一个带有角色名称的表单,然后我没有将它放到控制台和/或在页面上显示它,而是得到了 404。我一定是在搞砸一些简单的事情,所以几个小时后试图自己弄清楚必须是什么简单的事情并做大量的搜索引擎工作,我想我会把它带到社区。​​p>

现在我有你从中获得的基本框架:

express --css myapp

没有添加任何花哨的东西。这是我的 app.js(注意 app.post 的最后几行:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

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

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

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

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

module.exports = app;

app.post('/', function(req, res) {
    console.log(req.body);
    console.log('Character: ' + req.body.charactername);
    res.send('Character Name: ' + req.body.charactername);
});

最后,我的玉文件和表格。

extends layout

block content
  h1= title
  p Welcome to #{title}
  form(method='post',action='/')
    input(type='text',name='charactername')
    input(type='submit')

就像我说的,这当然很简单,但它让我发疯了,我似乎无法找到一个文档、网页、操作指南或教程来解释我在这里做错了什么。

【问题讨论】:

    标签: node.js forms post express pug


    【解决方案1】:

    app.post('/', function(req, res) {}); 在您的 404 错误处理路线之后。将其移动到之前:

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
        var err = new Error('Not Found');
        err.status = 404;
        next(err);
    });
    

    只要您的其他路线没有冲突 (app.use('/', routes)),这将起作用。

    【讨论】:

      猜你喜欢
      • 2012-08-07
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 2016-12-05
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多