【问题标题】:Cannot GET /index.html. when following tutorial on Node.js and MongoDB无法获取 /index.html。在学习有关 Node.js 和 MongoDB 的教程时
【发布时间】:2021-04-29 23:28:06
【问题描述】:

我正在按照here 的创建注册表单的指南进行操作。 按照它的步骤尝试连接时会出现错误http://127.0.0.1:3000/

无法获取 /index.html

我从C:\Program Files\MongoDB\Server\4.4\bin开始MongoDB

我对代码的唯一更改是

mongoose.connect('mongodb://localhost:27017/gfg', { useNewUrlParser: true, useUnifiedTopology: true }); 

自从启动应用程序时,它声明有已弃用的应用程序,但它什么也没做。

MongoDB 正确启动

mongod {"t":{"$date":"2020-09-28T20:39:11.740-04:00"},"s":"I",  "c":"NETWORK",  "id":23016,   "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}

还有节点应用程序server listening at port 3000 connection succeeded,所以我不知道我在哪里搞砸了

我的目录是这样的

project root 
     ├── app.js
     ├── index.html
     └── package-lock.json
     ├── signup_success.html
     ├── style.css

Firefox 给我一个404 GET error on inspection

这里是 app.js

var express=require("express"); 
var bodyParser=require("body-parser"); 
  
const mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/gfg', { useNewUrlParser: true, useUnifiedTopology: true }); 
var db=mongoose.connection; 
db.on('error', console.log.bind(console, "connection error")); 
db.once('open', function(callback){ 
    console.log("connection succeeded"); 
}) 
  
var app=express() 
  
  
app.use(bodyParser.json()); 
app.use(express.static(__dirname + "/../public")); 
app.use(bodyParser.urlencoded({ 
    extended: true
})); 
  
app.post('/sign_up', function(req,res){ 
    var name = req.body.name; 
    var email =req.body.email; 
    var pass = req.body.password; 
    var phone =req.body.phone; 
  
    var data = { 
        "name": name, 
        "email":email, 
        "password":pass, 
        "phone":phone 
    } 
db.collection('details').insertOne(data,function(err, collection){ 
        if (err) throw err; 
        console.log("Record inserted Successfully"); 
              
    }); 
          
    return res.redirect('signup_success.html'); 
}) 
  
  
app.get('/', (req,res) => {   res.render('index.html');
    }).listen(3000) 
  
  
console.log("server listening at port 3000"); 

【问题讨论】:

  • 您介意在此处添加您的 server.js(或 index.js)代码吗?
  • app.get('/', (req,res) => { res.render('index.html'); 试试这个,让我知道你得到了什么。我只是稍微修剪了 .get 方法并删除了一些逻辑
  • 我应该削减多少?删除整个 app.get 并像这样替换它会留下一个未关闭的 {,我也没有 server.js 或 index.js,只有教程中显示的内容

标签: html node.js mongodb express mongoose


【解决方案1】:

所以你的问题是你使用render 来表达你的观点。但是,您尚未指定渲染引擎(ejs、pug 等...)。

话虽如此,HTML 文件不需要渲染引擎。您可以像这样简单地为他们服务:

app.get('/', (req, res) => {
   res.sendFile('index.html', {
     root: './'
   }
})

【讨论】:

    【解决方案2】:

    如果在访问 http://127.0.0.1:3000/ 时遇到问题并收到此错误 Cannot GET /index.html ,请在 app.js 的 var app=express() 行之后添加以下行。

    app.use(express.static(__dirname));

    “Cannot GET /index.html”错误将得到解决。

    app.js

    var express=require("express"); 
    var bodyParser=require("body-parser"); 
      
    const mongoose = require('mongoose'); 
    mongoose.connect('mongodb://localhost:27017/gfg', { useNewUrlParser: true, useUnifiedTopology: true }); 
    var db=mongoose.connection; 
    db.on('error', console.log.bind(console, "connection error")); 
    db.once('open', function(callback){ 
        console.log("connection succeeded"); 
    }) 
      
    var app=express() 
    app.use(express.static(__dirname));
      
      
    app.use(bodyParser.json()); 
    app.use(express.static(__dirname + "/../public")); 
    app.use(bodyParser.urlencoded({ 
        extended: true
    })); 
      
    app.post('/sign_up', function(req,res){ 
        var name = req.body.name; 
        var email =req.body.email; 
        var pass = req.body.password; 
        var phone =req.body.phone; 
      
        var data = { 
            "name": name, 
            "email":email, 
            "password":pass, 
            "phone":phone 
        } 
    db.collection('details').insertOne(data,function(err, collection){ 
            if (err) throw err; 
            console.log("Record inserted Successfully"); 
                  
        }); 
              
        return res.redirect('signup_success.html'); 
    }) 
      
      
    app.get('/', (req,res) => {   res.render('index.html');
        }).listen(3000) 
      
      
    console.log("server listening at port 3000");
    

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <title> Signup Form</title>
            
            
    <link rel="stylesheet"
    href=
    "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
    integrity=
    "sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
    crossorigin="anonymous">    
            
    <link rel="stylesheet" type="text/css" href="style.css">
            
    </head>
    <body>
        
        <br>
        <br>
        <br>
        <div class="container" >
            <div class="row">
            <div class="col-md-3">
                        
            </div>
                    
            <div class="col-md-6 main">
                        
                <form action="/sign_up" method="post">
                        
                <h1> Signup form </h1>
                                
                <input class="box" type="text" name="name" id="name"
                placeholder="Name" required /><br>
                                
                <input class="box" type="email" name="email" id="email"
                placeholder="E-Mail " required /><br>
                                
                <input class="box" type="password" name="password"
                id="password" placeholder="Password " required/><br>
                                
                <input class="box" type="text" name="phone" id="phone"
                placeholder="Phone Number " required/><br>
                            <br>
                <input type="submit" id="submitDetails"
                name="submitDetails" value="Submit" /><br>
                        
                </form>
                        
            </div>
                    
                    
            <div class="col-md-3">
            </div>
                    
        </div>
        </div>
    </body>
    </html> 
    

    【讨论】:

    • 您的项目目录是否包含“index.html”?您可能还想在此处包含其余代码
    • 正如你所建议的,我已经完成了更改
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2011-06-03
    • 2013-08-29
    • 2010-09-24
    • 1970-01-01
    • 2021-04-24
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多