Express JS не может получить доступ к нескольким статическим страницам - PullRequest
0 голосов
/ 18 марта 2019

Я слежу за тотальным онлайн, который научит вас использовать express.js для доступа к нескольким статическим страницам. Я точно следовал руководству и набираю код в точности так, как он показывает, но код не работает, когда я пытаюсь перемещаться по сайту с помощью навигационной панели, сервер выдает мне сообщение об ошибке как Cannot GET /index.html или Cannot GET / about.html или Cannot GET /contact.html. Код, который у меня есть, приведен ниже Я сохранил все HTML-файлы в папке с именем страниц. Должен ли я скопировать все HTML-файлы в общую папку? Я не понимаю, в чем смысл создания папки страниц в этом уроке.

enter image description here

 const path = require('path');

 const express = require('express');

  const app = new express();

  app.use(express.static('public'));

  app.get('/', (req, res) => {
   res.sendFile(path.resolve(__dirname, 'pages/index.html'));
 });

 app.get('/about', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'pages/about.html'));
 });

 app.get('/contact', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'pages/contact.html'));
 });

 app.get('/post', (req, res) => {
   res.sendFile(path.resolve(__dirname, 'pages/post.html'));
 });

 app.listen(4000, () => {
  console.log('App listening on port 4000')
})

Ответы [ 5 ]

0 голосов
/ 18 марта 2019

переместите папку страниц в общую папку, затем:

app.use(express.static(__dirname + '/public'));
0 голосов
/ 18 марта 2019

Вам необходимо зарегистрировать статический pages каталог

app.use(express.static(__dirname + '/pages'));

Ваш маршрут должен работать.

app.get('/about.html', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'about.html'));
});
0 голосов
/ 18 марта 2019

Просто вы меняете путь вот так

Например res.sendFile(path.resolve(__dirname, 'public/pages/', 'index.html'));

0 голосов
/ 18 марта 2019

Если вы запрашиваете /about.html, тогда:

  • Это будет соответствовать app.use(express.static('public')); (потому что это соответствует каждый URL)
  • Это не будет соответствовать app.get('/about', (req, res) => { (потому что это отличается)
  • Это будет соответствовать app.get('/about.html', (req, res) => { (потому что это соответствует ему явно)

app.use(express.static('public')); не найдет about.html или about, поскольку в каталоге public нет файлов с таким именем.

res.sendFile(path.resolve(__dirname, 'pages/about.html')); найдет about.html, поскольку путь явно ему соответствует.

0 голосов
/ 18 марта 2019

попробуйте так:

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

и

res.sendFile(path.resolve(__dirname+'/public/', 'pages/post.html'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...