Как я могу обслуживать 2 разные папки, используя экспресс (клиент и администратор)

Я пытаюсь создать панель администратора для своего приложения node.js. Моя текущая структура папок выглядит так:

client (folder)
  images (folder)
  fonts (folder)
  index.html
  index.css
  index.js

app.js (node.js server code)
package.json

Я хочу иметь еще одну папку в этом корне, выглядящую так:

admin (folder)
  index.html
  index.css
  index.js

Имея всего 2 строки экспресс-кода в моем приложении node.js (см. ниже), я попробовал первую «логическую» вещь.

app.use(express.static(path.join(__dirname, 'client')))
app.use(express.static(path.join(__dirname, 'admin')))

app.get('/admin', (req, res) => res.sendFile(`${__dirname}/admin/index.html`))
app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))

Но это, очевидно, не работает, выдает какую-то странную ошибку в строке 1 index.html, что «<» является недопустимым символом или что-то в этом роде, поэтому он не работает.

Код:

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

app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))

Это действительно весь код, который я использую с экспрессом в настоящее время, и, честно говоря, я даже не очень хорошо его понимаю. Вся маршрутизация выполняется на стороне клиента, и на данный момент она работает отлично.

Что я пытаюсь здесь сделать, так это то, что по какому бы маршруту ни перемещался пользователь, он перенаправляется в мое клиентское приложение, а внешний маршрутизатор делает все остальное (IE localhost:8080/ или localhost:8080/ps4/games...) . Но если я зайду на localhost:8080/admin, и только в этом случае, я хочу обслуживать панель администратора, откуда я могу входить и управлять своими продуктами, пунктами меню, отвечать на сообщения чата и т. д.

Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
542
1

Ответы 1

Вы можете заменить эти 4 строки вашего кода:

app.use(express.static(path.join(__dirname, 'client')))
app.use(express.static(path.join(__dirname, 'admin')))

app.get('/admin', (req, res) => res.sendFile(`${__dirname}/admin/index.html`))
app.get('*', (req, res) => res.sendFile(`${__dirname}/client/index.html`))

с этими:

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

Вышеупомянутые встроенные функции экспресса позволяют размещать статические файлы с желаемым путем. Дополнительную информацию о размещении статических файлов можно найти в документации по экспрессу на странице http://expressjs.com/en/starter/static-files.html.

Боюсь, это не работает. Я делал пробы и ошибки, и, насколько мне удалось, это app.use('/client', express.static(__dirname + '/client')) app.use('/admin', express.static(__dirname + '/admin')) А так же в html файлах прописать путь к /admin/index.js для скрипта и css так же как и на клиенте. Проблема в том, что мне нужно перейти на localhost:8080/client/, чтобы перейти на веб-сайт, чего я не хочу, и любой другой маршрут, кроме localhost:8080/client/, не работает, чего я тоже не делаю. хотеть. Я буду делать еще несколько проб и ошибок и посмотреть, что я могу сделать

Milos Krstic 01.02.2019 21:30

возможно, вам придется установить <base href = "/"> в вашем клиенте index.html. Таким образом, ваш экспресс-виртуальный путь совпадает с вашим путем index.html.

Felipe Toledo 01.02.2019 21:50

Похоже, проблема была где-то в одноименных файлах. Насколько я понял, вы можете обслуживать несколько папок, но они будут действовать как одна и та же папка, поэтому вы столкнетесь с проблемой с одинаковым именем, и программа читает только 1. Однако у меня возникла идея локального приложения для панели администратора, которое делает это так что я пойду по этому пути. Спасибо, в любом случае

Milos Krstic 05.02.2019 20:46

Другие вопросы по теме