Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用NodeJS为多个html文件提供服务_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 如何使用NodeJS为多个html文件提供服务

Javascript 如何使用NodeJS为多个html文件提供服务,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我用nodeJS创建了一个mongoDB表单,我可以为注册页面提供服务,但是当我点击任何其他链接转到其他页面时,它会抛出“Cannot GET/index.html”这样的例子。我不确定如何使用nodejs服务多个文件 var express = require("express"); var app = express(); var port = 3000; var bodyParser = require('body-parser'); app.use(bodyParser.json());

我用nodeJS创建了一个mongoDB表单,我可以为注册页面提供服务,但是当我点击任何其他链接转到其他页面时,它会抛出“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);
});

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

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

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

  • 查看要提供服务的页面的总体列表
  • 知道哪些是静态HTML页面,哪些是动态HTML页面
  • 知道它们在本地文件系统中的位置
  • 查看每个页面要使用的URL
  • 您可以查看express.static和的常规教程

    当我点击任何其他链接转到其他页面时,它会抛出“cannotget/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);
    });
    

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

    将返回其他链接的html文件的代码在哪里?好的,假设我有一个动态网页,我还有大约6个其他html文件,我可以把它们单独发送吗?这样做的代码是什么?@ArvindVenkatesan-将它们单独发送就像您当前的“/”路由服务“/SignUp.html”。好的!非常感谢@ArvindVenkatesan-因为看起来你可能是新来的,如果这回答了你的问题,你可以通过点击答案左边的复选标记向社区表明这一点。这也将为您在stackoverflow上按照正确的程序赢得一些声誉积分。