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传递req
到users.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。 它会工作..