Не удается ПОЛУЧИТЬ /index.html . при следовании руководству по Node.js и MongoDB

#html #node.js #mongodb #express #mongoose

#HTML #node.js #mongodb #выразить #мангуст

Вопрос:

Я следую руководству по созданию формы регистрации, отсюда. Выполнение его шагов приводит к ошибке при попытке подключения http://127.0.0.1:3000/

Не удается ПОЛУЧИТЬ /index.html

Я начинаю MongoDB с C:Program FilesMongoDBServer4.4bin

Мое единственное изменение в коде

 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"); 
  

Комментарии:

1. Вы не возражаете добавить свой server.js (или index.js ) код здесь тоже есть?

2. app.get('/', (req,res) => { res.render('index.html'); попробуйте это и дайте мне знать, что вы получите. Я просто немного урезал метод .get и удалил некоторую логику

3. Сколько я должен обрезать? Удаление всего app.get и замена его таким образом оставляет незакрытый { , у меня также нет server.js или index.js , только то, что показано в учебнике

Ответ №1:

Итак, ваша проблема в том, что вы используете render для своих представлений. Однако вы не указали механизм рендеринга (ejs, pug и т. Д.).

Сказав это, HTML-файлы не требуют механизма рендеринга. Вы можете просто обслуживать их следующим образом:

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

Ответ №2:

Если вы столкнулись с проблемой при доступе http://127.0.0.1:3000 / и получение этой ошибки Не может ПОЛУЧИТЬ /index.html , добавьте нижеприведенную строку к app.js после строки var app=express().

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

«Не удается ПОЛУЧИТЬ /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> 
  

Комментарии:

1. Содержит ли ваш каталог проекта «index.html «? Возможно, вы захотите включить сюда и остальной код

2. Как вы предположили, я внес изменения