这是我第一次学习Node.js.我正在尝试将MySQL中的数据打印到我的HTML页面中,但每当我在浏览器http://localhost:3000/index.html
上加载我的网站时,我都会在网页上收到此消息:Cannot GET /index.html
。但是,当我在浏览器上加载此http://localhost:3000/rows/
时,我将MySQL中的数据作为输出[{"ID":1,"Name":"Wendy Smith","Message":"Hello, how are you?"}]
。
我已经发布了以下代码。我正在努力解决这个问题。
的index.html
<html>
<head>
<title>My db rows</title>
</head>
<body>
<h1>My Data</h1>
<div id="output"></div>
<script type="text/javascript">
var opts = {
url: 'http://localhost:3000/rows/'
};
fetch(opts)
.then((res) => {
if (res.ok) {
return res.json();
}
})
.catch(console.log);
</script>
</body>
</html>
server.js
var express = require('express');
var app = express();
app.use(express.static('public'))
var mysql = require('mysql');
var connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "mywebsite"
});
app.get('/rows', function (req, res) {
connection.connect();
connection.query('SELECT * FROM users', function(err, rows, fields) {
connection.end();
if (err) throw err;
res.json(rows);
});
});
app.listen(3000, function () {
console.log('Connected to port 3000!');
});
答案 0 :(得分:3)
您缺少通过index.html页面路由请求的中间件代码。比方说,您已在const
中设置了app.js
变量:
const indexRouter = require("./app_server/router/index.html");
您可以这样呈现html
页面:
app.use("/", indexRouter);
如果您想使用express.static
中间件来提供public
文件夹中的静态文件,请使用:
app.use(express.static(__dirname + "/public"));