【问题标题】:Express req.body undefined, routes after bodyParser doesn't workExpress req.body 未定义,bodyParser 之后的路由不起作用
【发布时间】:2014-07-25 13:49:27
【问题描述】:

我不知道为什么在编程中即使是基本任务也会有这么多该死的错误和问题。这是我的代码,无论我做了多少古怪的位置更改,它都无法正常工作。

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

var app = express();
var store = require('./routes/store');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

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

app.get('/', function(req, res){
  res.render('home', {title: 'Ninja Store'})
});

app.post('/', function(req, res) {
    username = req.body.username || 'Anonymous';
    req.session.username = username;
    res.redirect('/');
});

它一直在说

Cannot set property 'username' of undefined

感谢您的帮助。

【问题讨论】:

  • 正确检查我认为它在req.session.username = username;线上失败了
  • 我的朋友你完全正确!感谢您指出了这一点。现在要弄清楚会话出了什么问题。
  • 我认为你没有使用session中间件。
  • 看看这里之后告诉我npmjs.org/package/express-session
  • Mritunjay,是的,你是对的,我通过一些简单的谷歌搜索找到了 express-session。我认为它曾经作为 expressjs 的一部分包含在内,这就是为什么我正在遵循的教程并未表明我需要手动安装它的原因。谢谢小伙伴的帮助!

标签: node.js express


【解决方案1】:

我认为这里的 req.session 是未定义的,而不是 req.body。因为是属性设置错误。

如果req.body 未定义,则会抛出属性读取错误。

Cannot read property 'username' of undefined.

您应该使用express-session 中间件来解决这个问题。我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我已经回答了同样的问题check it,你应该使用:app.use(express.cookieSession());

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多