NodeJS 新手 - TypeError:无法读取未定义的属性“电子邮件”

时间:2021-04-28 06:27:43

标签: javascript node.js typeerror ejs body-parser

我是 NodeJS 新手,遇到以下错误:

enter image description here

我的代码非常简单。这是我的 apps.js 文件:

var express = require('express');
var mysql = require('mysql');
var body_parser = require('body-parser');
var app = express();

app.set("view engine", "ejs");
app.set(body_parser.urlencoded({extended: true}));

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'join_us'
});

app.get("/", function(req, res){
    var q = "SELECT COUNT(*) AS count FROM users";
    connection.query(q, function(err, results){
        if (err) throw err;
        var count = results[0].count;
        res.render("home", {count: count});
    });
});

app.post("/register", function(req, res){
    var person = {
        email: req.body.email
    };
    connection.query('INSERT INTO users SET ?', person, function(err, result) {
        if (err) throw err;
        res.redirect("/");
    });
});

app.listen(3000, function(){
    console.log("Server running on 3000!");
});

这是我的 home.ejs 文件:

<h1>JOIN US</h1>
 
<p class="lead">Enter your email to join <strong><%= count %></strong> 
others on our waitlist. We are 100% not a cult. </p>
 
<form method="POST" action='/register'>
 <input type="text" class="form" name="email" placeholder="Enter Your Email">
 <button>Join Now</button>
</form>

此外,我的 package.json 文件如下所示:

  "name": "join_us",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "ejs": "^3.1.6",
    "express": "^4.17.1",
    "faker": "^5.5.3",
    "mysql": "^2.18.1"
  }
}

我知道已经有一些类似的问题,但没有一个答案对我有用。谢谢:)

1 个答案:

答案 0 :(得分:2)

body-parser 等中间件应使用 use() 方法设置 - 而不是 set(),后者用于其他类型的应用程序配置目的。

所以替换这一行:

app.set(body_parser.urlencoded({extended: true}));  // incorrect

与:

app.use(body_parser.urlencoded({extended: true}));  // correct
相关问题