gpt4 book ai didi

javascript - 类型错误 : Cannot read property 'body' of undefined after POST (MEAN)

转载 作者:搜寻专家 更新时间:2023-10-31 23:32:57 25 4
gpt4 key购买 nike

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

我已经尝试发送数据了。它被发送,我得到 200 作为回应。但是每当我尝试通过 req.body 通过 body-parser 访问数据时,我都会得到 500 和我在最底部发布的错误。

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

  • 我使用某种请求解析器: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()
})
}

用户.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,但你不应该至少将 req 从路由处理程序传递到 users.create() 中,即

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

甚至可能

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

关于javascript - 类型错误 : Cannot read property 'body' of undefined after POST (MEAN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com