类型错误:无法读取开机自检后未定义的属性“正文”(平均值)
TypeError: Cannot read property 'body' of undefined after POST (MEAN)
我正在尝试将POST数据从AngularJS发送到Express。我目前正在做的是尝试通过curl发送一些POST内容。
我已经尝试发送数据。它被发送,我得到 200 作为响应。但是每当我尝试通过 req.body 通过 body-parser 访问数据时,我都会得到 500 和我在最底部发布的错误。
我对这个问题做了很多研究(过去 4-5 小时......),我想我检查了以下常见问题:
- 我使用某种请求解析器:正文解析器
- 在需要路由之前,我将我的 app.use(...) 与正文解析器中间件放在 一起
- 我明确告诉 POST 使用的内容类型
- 我尝试了application/json和application/x-www-form-urlencode。
我投降。叠花。请帮帮我。
卷曲:
curl -X POST -H "Content-Type: application/json" -d '{"username": "gala", "email": "ga@ga.g", "password": "123"}' localhost:3000/users
快递.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,但您至少不应该从路由处理程序将req
传递到users.create()
中,即
app.route('/users').post(function(req, res) {
users.create(req, res)
})
甚至
app.route('/users').post(users.create);
类型错误:无法读取 POST 后未定义的属性"body"(平均值)当您的本地主机 IP 被更改或请求的 IP 不正确时,您将收到此错误,如您在帖子 URL 中所述。我在对以太网进行故障排除时遇到了同样的错误。然后我的IP地址被更改了。因此,请检查您的IP。它会工作..
这对我来说是因为我在 chrome 控制台上添加了一些测试脚本,似乎存在干扰。 您可以手动清理主机或在另一个实例中运行您的应用程序 f Chrome。
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.get("/",function(req,res){
res.sendFile(__dirname + "/index.html");
});
//Post processing after taking data from user..
app.post("/",function(req,res,next){
var num1 = Number(req.body.num1);
var num2 = Number(req.body.num2);
var result = num1+num2;
res.send("The result is "+ result);
});
// To create a server...
app.listen(3000, function(){
console.log("Server started..3000");
});
我希望这段代码也适合你。你可以从上面得到帮助。
就我而言,我忘了添加
app.use(express.json());
在我的索引中。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 类型错误:无法读取开机自检后未定义的属性“正文”(平均值)
- Chrome扩展:从内容脚本中删除正文属性
- 访问节点请求的正文属性
- jQuery'css不是't向正文添加背景属性
- 正文bgcolor属性权重
- 正在将对象属性复制到循环中具有空正文的数组中
- 获取正文标签样式属性内容
- JQuery:更改窗口大小时留下的正文css属性