#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:
Пара вещей,
- у вас есть 2 одинаковые конечные точки
router.get('/',
- Так что измените второй маршрут на что-то вроде
router.get('/login',
- теперь вы должны получить доступ к своей странице входа в / 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. Я попробовал, а также получил ту же проблему. Я загружаю свой код выше, надеюсь, смогу найти, что произойдет.