Я пытаюсь создать панель администратора для своего приложения 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, и только в этом случае, я хочу обслуживать панель администратора, откуда я могу входить и управлять своими продуктами, пунктами меню, отвечать на сообщения чата и т. д.
Спасибо!





Вы можете заменить эти 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.
возможно, вам придется установить <base href = "/"> в вашем клиенте index.html. Таким образом, ваш экспресс-виртуальный путь совпадает с вашим путем index.html.
Похоже, проблема была где-то в одноименных файлах. Насколько я понял, вы можете обслуживать несколько папок, но они будут действовать как одна и та же папка, поэтому вы столкнетесь с проблемой с одинаковым именем, и программа читает только 1. Однако у меня возникла идея локального приложения для панели администратора, которое делает это так что я пойду по этому пути. Спасибо, в любом случае
Боюсь, это не работает. Я делал пробы и ошибки, и, насколько мне удалось, это 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/, не работает, чего я тоже не делаю. хотеть. Я буду делать еще несколько проб и ошибок и посмотреть, что я могу сделать