类型错误:无法读取未定义的属性“用户名”--
Posted
技术标签:
【中文标题】类型错误:无法读取未定义的属性“用户名”--【英文标题】:TypeError: Cannot read property 'username' of undefined-- 【发布时间】:2021-02-21 14:40:37 【问题描述】:var express = require("express");
var app = express();
var morgan = require("morgan");
var mongoose = require("mongoose");
port = 8000;
var User = require("./app/models/user");
mongoose.connect("mongodb://localhost:27017/tutorial", function (err)
if (err)
console.log("Disconnected: " + err);
else
console.log("connected");
);
app.post("/users", function (req, res)
var user = new User();
user.username = req.body.username;
user.email = req.body.email;
user.password = req.body.password;
user.save();
res.send("user created");
);
app.use(morgan("dev"));
app.listen(port, function ()
console.log("You are listen on port " + port);
);
TypeError:无法读取未定义的属性“用户名”
在 D:\MEAN\server.js:16:28
在 Layer.handle [as handle_request] (D:\MEAN\node_modules\express\lib\router\layer.js:95:5)
在下一个 (D:\MEAN\node_modules\express\lib\router\route.js:137:13)
在 Route.dispatch (D:\MEAN\node_modules\express\lib\router\route.js:112:3)
在 Layer.handle [as handle_request] (D:\MEAN\node_modules\express\lib\router\layer.js:95:5)
在 D:\MEAN\node_modules\express\lib\router\index.js:281:22
在 Function.process_params (D:\MEAN\node_modules\express\lib\router\index.js:335:12)
在下一个 (D:\MEAN\node_modules\express\lib\router\index.js:275:10)
在 expressInit (D:\MEAN\node_modules\express\lib\middleware\init.js:40:5)
在 Layer.handle [as handle_request] (D:\MEAN\node_modules\express\lib\router\layer.js:95:5)
在 trim_prefix (D:\MEAN\node_modules\express\lib\router\index.js:317:13)
在 D:\MEAN\node_modules\express\lib\router\index.js:284:7
在 Function.process_params (D:\MEAN\node_modules\express\lib\router\index.js:335:12)
在下一个 (D:\MEAN\node_modules\express\lib\router\index.js:275:10)
在查询 (D:\MEAN\node_modules\express\lib\middleware\query.js:45:5)
在 Layer.handle [as handle_request] (D:\MEAN\node_modules\express\lib\router\layer.js:95:5)
【问题讨论】:
【参考方案1】:如果您的 post 请求像我认为的那样以 json 格式出现,您将需要以某种方式解析请求的正文。您可以通过要求“body-parser”并使用它的 json 方法来做到这一点,如下所示:
const bodyParser = require('body-parser');
const app = require('express')();
app.use(bodyParser.json());
我们所说的app.use(bodyParser.json())
是对每条路由使用该正文解析器。
【讨论】:
【参考方案2】:包含一个使用 express 方法获取请求正文的代码 express.json,该方法在后台使用正文解析器模块 例如
这应该可行
app.use(express.json())
【讨论】:
以上是关于类型错误:无法读取未定义的属性“用户名”--的主要内容,如果未能解决你的问题,请参考以下文章
无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”
错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`
未捕获的类型错误:无法读取未定义的属性 toLowerCase