@Iya27
школьник

Почему выдаёт ошибку cannot get?

Я хочу сделать так, чтобы в случае успешной вставки данных в бд пользователя перенаправляло на другую страницу. Но мне почему-то постоянно пишет get cannot и имя файла, хотя сервер и файл, на который я хочу переправить в одной и той же папке. Скажите, пожалуйста, почему так?

let express = require("express");
let app = express();
let port = 3000;
 
 
let bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));
 
 
let mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/test");
let nameSchema = new mongoose.Schema({
  name: String
  
  
});
let User = mongoose.model("User", nameSchema);
 
app.get("/", (req, res) => {
  res.sendFile(__dirname + "/registr&login.html");
});
 
app.post("/addname", (req, res) => {
  let myData = new User(req.body);
  myData.save()
    .then(item => {
        res.redirect("/cA.html");
    })
    .catch(err => {
      res.status(400).send("Что-то пошло не так");
    });
});
 
app.listen(port, () => {
  console.log("Server listening on port " + port);
});
  • Вопрос задан
  • 4589 просмотров
Решения вопроса 1
@slide13
frontend/web-developer
чтобы отдавать статику по прямому урлу, в том числе и html - надо вначале подключить express.static мидлвар с указанием папки, где эти статичные файлы лежат, т.е. в данном случае лучше переместить html, например, в папку public, далее использовать ее для отдачи статики:
app.use(express.static('public'))

а в редиректе добавить путь к папке:
res.redirect("/public/cA.html");
это если именно редирект нужен на статику.

из более правильного варианта - добавить роут на get "/ca" и отдавать на запрос файл, как и на "/", чтобы по одному файлу отдавать, а не статику расшаривать всю

ну и 3й вариант - вместо редиректа сразу отдавать файл, тут уже смотря как тебе надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы