#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. Как вы предположили, я внес изменения