我是 NodeJS 新手,遇到以下错误:
我的代码非常简单。这是我的 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"
}
}
我知道已经有一些类似的问题,但没有一个答案对我有用。谢谢:)
答案 0 :(得分:2)
body-parser
等中间件应使用 use()
方法设置 - 而不是 set()
,后者用于其他类型的应用程序配置目的。
所以替换这一行:
app.set(body_parser.urlencoded({extended: true})); // incorrect
与:
app.use(body_parser.urlencoded({extended: true})); // correct