我用nodeJS创建了一个mongoDB表单,我可以提供signUp页面,但是当我单击任何其他链接转到其他页面时,例如会抛出“ Cannot GET /index.html”。我不确定如何使用nodejs服务多个文件。
var express = require("express");
var app = express();
var port = 3000;
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/ClubArchive_Users");
var nameSchema = new mongoose.Schema({
fname: String,
lname: String,
email: String,
uname: String,
pwd :String
});
var User = mongoose.model("User", nameSchema);
app.get("/", (req, res) => {
res.sendFile(__dirname + "/SignUp.html");
});
app.post("/addname", (req, res) => {
var myData = new User(req.body);
myData.save()
.then(item => {
res.sendFile(__dirname + "/index.html");
})
.catch(err => {
res.status(400).send("Unable to save to database");
});
});
app.listen(port, () => {
console.log("Server listening on port " + port);
});
答案 0 :(得分:1)
node.js本身根本不提供任何内容。因此,您希望服务器响应的任何URL在Express中都必须具有相应的路由。您可以使用
分别对每个代码进行编码app.get(someURLPath, someHandler);
或者,您可以使用express.static()
中间件为位于目录层次结构中的一组静态页面提供服务。
为了更具体地为您提供帮助,我们需要:
您可以查看有关express.static here和here的一般教程。
当我单击任何其他链接转到其他页面时,例如,抛出“无法获取/index.html”。我不确定如何使用nodejs服务多个文件。
您将需要教您的node.js服务器如何响应那些其他链接。为每个页面创建一个自定义路由,或者为静态页面使用express.static()
,以便它可以使用一行中间件为一堆静态页面提供服务。