如何使用NodeJS提供多个HTML文件

时间:2019-11-15 23:37:44

标签: javascript node.js mongodb express mongoose

我用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);
});

1 个答案:

答案 0 :(得分:1)

node.js本身根本不提供任何内容。因此,您希望服务器响应的任何URL在Express中都必须具有相应的路由。您可以使用

分别对每个代码进行编码
app.get(someURLPath, someHandler);

或者,您可以使用express.static()中间件为位于目录层次结构中的一组静态页面提供服务。

为了更具体地为您提供帮助,我们需要:

  1. 查看您要投放的页面的总体列表
  2. 了解哪些是静态HTML页面,哪些是动态
  3. 知道它们在您本地文件系统中的位置
  4. 查看每个页面要使用哪些URL

您可以查看有关express.static herehere的一般教程。

  

当我单击任何其他链接转到其他页面时,例如,抛出“无法获取/index.html”。我不确定如何使用nodejs服务多个文件。

您将需要教您的node.js服务器如何响应那些其他链接。为每个页面创建一个自定义路由,或者为静态页面使用express.static(),以便它可以使用一行中间件为一堆静态页面提供服务。