TypeError:POST(MEAN)之后无法读取undefined的属性“body”

我正在尝试将POST数据从AngularJS发送到Express。 我现在正在做的是试图通过curl发送一些POST的东西。

我已经尝试发送数据。 它得到发送,我得到200作为回应。 但是,每当我尝试通过身体分析器通过req.body访问数据,我将得到一个500和我发布在最底部的错误。

我做了很多关于这个问题的研究(过去4-5个小时…),我想我检查了以下常见问题:

  • 我使用某种请求parsing器:body-parser
  • 我需要路由之前把我的app.use(…)与body-parser中间件
  • 我明确地告诉POST使用什么Content-Type
  • 我尝试了application / json和application / x-www-form-urlencoded

我投降。 StackOverflowers。 请帮帮我。

curl:

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

express.js

 // 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:

 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:

 var User = require('mongoose').model('User') exports.create = function(req, res, next) { console.log(req.body) } 

错误信息:

 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) 

我不使用Node或Express很多,但你不应该至less传递requsers.create()从路由处理程序,即

 app.route('/users').post(function(req, res) { users.create(req, res) }) 

甚至可能是

 app.route('/users').post(users.create); 

TypeError:无法在POST(MEAN)之后读取未定义的属性“body”,当您的localhost ip被更改或者请求的ip不正确时,您会在后面的URL中提到这个错误。 当我排除我的以太网时,我得到了同样的错误。 然后我的IP地址被改变了。 所以检查你的IP。 它会工作..