首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:无法读取未定义的POST后的属性“body”(平均)

TypeError:无法读取未定义的POST后的属性“body”(平均)
EN

Stack Overflow用户
提问于 2015-03-16 00:06:16
回答 5查看 25K关注 0票数 4

我正在尝试从AngularJS发送帖子数据到Express。我现在正在做的是通过卷发发送一些帖子。

我已经试过发送数据了。它被发送了,我得到了200作为回应。但是每当我试图通过身体解析器通过req.body访问数据时,我就会得到一个500,以及我在最下面发布的错误。

我对这件事做了很多研究(过去的4-5小时.)我想我检查了以下常见的问题:

  • 我使用某种请求解析器:正文解析器。
  • 我把app.use(.)在需要路由之前,使用身体解析器中间件。
  • 我明确指出POST使用的内容类型
  • 我尝试过application/json和application/x-www-form-urlencoded。

我投降。StackOverflowers。帮帮我求你了。

卷曲:

代码语言:javascript
复制
curl -X POST -H "Content-Type: application/json" -d '{"username": "gala", "email": "ga@ga.g", "password": "123"}' localhost:3000/users

express.js

代码语言:javascript
复制
// glowny plik przygotowujacy aplikacje express

// wczytanie zaleznosci
var express = require('express')
var stylus = require('stylus')
var parser = require('body-parser')
var morgan = require('morgan')
var compress = require('compression')
var methodOverride = require('method-override')

// przygotowanie aplikacji, obsluga middleware i na koncu zwrocenie obiektu aplikacji
module.exports = function() {
    var app = express()

    if (process.env.NODE_ENV === 'development') {
        app.use(morgan('dev'))
    } else if (process.env.NODE_ENV === 'production') {
        app.use(compress())
    }

    app.use(parser.urlencoded({ extended: true }))
    app.use(parser.json())

    app.use(methodOverride())

    // uzycie jade jako silnika szablonow dla html
    app.set('views', __dirroot + '/app/views')
    app.set('view engine', 'jade')

    require(__dirroot + '/app/routes/index.server.route.js')(app)
    require(__dirroot + '/app/routes/users.server.route.js')(app)

    // mozliwosci uzywania statycznych plikow z folderu /public
    app.use(express.static(__dirroot + '/public'))

    return app
}

users.server.route.js:

代码语言:javascript
复制
var users = require(__dirroot + '/app/controllers/users.server.controller.js')

module.exports = function(app) {
    app.route('/users').post(function() {
        users.create()
    })
}

users.server.controller.js:

代码语言:javascript
复制
var User = require('mongoose').model('User')

exports.create = function(req, res, next) {
    console.log(req.body)
}

错误消息:

代码语言:javascript
复制
TypeError: Cannot read property 'body' of undefined
   at Object.exports.create (/home/gala/Projekty/cantr-crafting/app/controllers/users.server.controller.js:4:20)
   at /home/gala/Projekty/cantr-crafting/app/routes/users.server.route.js:5:15
   at Layer.handle [as handle_request] (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/layer.js:82:5)
   at next (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/route.js:110:13)
   at Route.dispatch (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/route.js:91:3)
   at Layer.handle [as handle_request] (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/layer.js:82:5)
   at /home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:267:22
   at Function.proto.process_params (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:321:12)
   at next (/home/gala/Projekty/cantr-crafting/node_modules/express/lib/router/index.js:261:10)
   at methodOverride (/home/gala/Projekty/cantr-crafting/node_modules/method-override/index.js:77:5) 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-16 00:15:58

我不常使用Node或Express,但您至少不应该从路由处理程序将req传递给users.create()吗?

代码语言:javascript
复制
app.route('/users').post(function(req, res) {
    users.create(req, res)
})

或者甚至

代码语言:javascript
复制
app.route('/users').post(users.create);
票数 6
EN

Stack Overflow用户

发布于 2016-03-14 07:19:21

TypeError:在POST (平均)之后无法读取未定义的属性‘’当您的本地主机ip被更改或请求的ip不正确时,您将得到这个错误,正如您在post url中提到的那样。当我对以太网进行故障排除时,我也遇到了同样的错误。然后我的Ip地址就变了。查一下你的ip。会有用的..。

票数 2
EN

Stack Overflow用户

发布于 2018-09-04 17:47:40

这种情况发生在我身上,因为我在chrome控制台上添加了一些测试脚本,似乎出现了干扰。你手动清理你的控制台,或者在另一个例子中运行你的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29067778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档