Преобразование страницы Nodejs (HTML), например, как изменить страницу, когда я нажимаю кнопку на главной странице, чтобы перейти на страницу входа?

#javascript #html #node.js

#javascript #HTML #node.js

Вопрос:

В моем коде маршрутизатора у меня есть что-то вроде приведенного ниже. На моей главной странице у меня есть кнопка для перехода на страницу входа в систему, которая работает без nodejs, но после подключения node.js код, покажите мне только главную страницу, если я нажму кнопку входа, страница будет отображаться так Cannot GET /LoginPage.html . Как это исправить?

 const express = require('express')


const router = express.Router()

router.get('/', (req, res) => {
    res.render('HomePage.html', {
        title: 'Hello World'
    })
})
router.get('/login', (req, res) => {
    res.render('LoginPage.html', {
        title: 'Hello World'
    })
})
  

В app.js код:

 const passport = require('passport')
const flash = require('express-flash')
const session = require('express-session')
const multer = require('multer');
const GridFsStorage = require("multer-gridfs-storage");
const path = require('path')
const cors = require('cors')
const crypto = require("crypto");
const favicon = require('serve-favicon')


const app = express(); 


const User = require('./models/user')
   
const router = require('./router')

app.engine('html', require( 'express-art-template'))

app.use(bodyParser.urlencoded({ extended: false }))

app.use(bodyParser.json())

app.use(express.static(__dirname   '/public'))
app.use('/node_modules/', express.static(__dirname   '/node_modules'))

app.use(cors());

app.use(router)

app.listen(4001, (req, res) => {
    console.log('port xxxx')
})
  

В HTML-коде просто нажмите кнопку и перейдите к Loginpage.html

  <a href="./LoginPage.html"> Login</a>
  

Ответ №1:

Пара вещей,

  1. у вас есть 2 одинаковые конечные точки router.get('/',
  2. Так что измените второй маршрут на что-то вроде router.get('/login',
  3. теперь вы должны получить доступ к своей странице входа в / login

Вы получаете Cannot GET /LoginPage.html , потому что нет маршрута LoginPage.html в вашем бэкэнде

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

1. Я пытаюсь, но все равно не работает, я загружаю некоторые детали, надеясь, что это полезно.

2. Вы пытаетесь отобразить /LoginPage.html которого там нет, обновите свой тег a с помощью <a href=»/login»> Login</a>

Ответ №2:

Во-первых, то, как вы определили маршруты, неверно, поскольку у вас 2 одинаковые конечные точки.Попробуйте изменить конечную точку входа как /login в вашем файле .js.

Вам также необходимо изменить html-файл, поскольку вы пытаетесь напрямую вызвать html-файл, а не конечную точку api / login.Вам нужно обратиться к конечной точке серверной части узла, которая отображает нужный HTML-файл. не прямая ссылка на html-файл.

Редактировать 1: пожалуйста, выполните следующие действия:

Измените свой app.js файл, как показано ниже:

 const express = require('express');
const app = express();

const router = require('./router');
const bodyParser = require('body-parser');
const path = require('path');
const cors = require('cors');

app.engine('html', require('express-art-template'));

app.use(bodyParser.urlencoded({ extended: false }));

app.use(bodyParser.json());

app.use('', express.static(path.join(__dirname, 'public')));

app.use(cors());

app.use(router);

app.listen(4001, (req, res) => {
  console.log('port 4001');
});
  

И router.js чтобы это нравилось

 const express = require('express');

const router = express.Router();

router.get('/', (req, res) => {
  res.render('index.html', {
    title: 'Hello World',
  });
});
router.get('/login', (req, res) => {
  res.render('login.html', {
    title: 'Hello World',
  });
});

module.exports = router;
  

И создайте общую папку и создайте 2 html-файла index.html и login.html . Структура вашего приложения должна быть такой, как показано ниже:

 --public
-------  index.html
-------  login.html
-- app.js
--router.js
--package.json
  

Я попробовал это, это сработало для меня. Измените переменные и другие имена файлов в соответствии с вашими потребностями. Я предполагаю, что ваша структура папок и способ рендеринга неверны.Надеюсь, это должно сработать.

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

1. Я изменил router.get(‘/ login’, (req, res) => { res.render(‘LoginPage.html ‘——, что мне еще нужно изменить?

2. @LeeAlex можете ли вы сказать мне, в чем проблема, с которой вы столкнулись сейчас.

3. Все та же проблема, не удается ПОЛУЧИТЬ /LoginPage.html . Единственный cheng — это » router.get (‘/ login’ «, нужно ли мне что-либо менять в HTML или app.js ?

4. @LeeAlex Я отредактировал ответ выше. Пожалуйста, проверьте это

5. Я попробовал, а также получил ту же проблему. Я загружаю свой код выше, надеюсь, смогу найти, что произойдет.