类型错误:无法读取未定义的属性“用户名”--

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

JQuery:未捕获的类型错误:无法读取未定义的属性“调用”

NextJS:未捕获的类型错误:无法读取未定义的属性(读取“属性”)