Expressjs как распределить загрузку статичных файлов в зависимости от пути в адресной строке

есть такой простой сервер

import express from "express";
import path from "path";
import fs from "fs";

const __dirname = path.resolve();
const app = express();

app.use(express.json());

app.use(express.static(path.join(__dirname, `src`), { index: 'none' }));///////////////

app.use(express.static(path.join(__dirname, `admin`), { index: 'none' }));////////////


app.get(`/*`, (req, res) => {
    let mainHtmlPath;
    if (req.url[0] === '/admin') {
        mainHtmlPath = path.join(__dirname, `admin`, 'index.html');
    } else {
        mainHtmlPath = path.join(__dirname, `src`, 'index.html');
    }

    fs.readFile(mainHtmlPath, 'utf8', (err, html) => {
        if (err) console.log(err, 'Ошибка')
        res.send(html)
    })
});


app.listen(80, () => console.log(`Server is run on port 80`))

я не могу понять, как заставить expressjs загружать именно нужные статические файлы

В итоге мне надо чтобы было так

если путь начинается просто /, чтобы грузились статические файлы только из папки src тем более, что он может измениться например /user/setting/

ну и естественно

если путь начинается просто /admin, чтобы грузились статические файлы только из папки admin тем более, что он может измениться например admin/users/list/

не знаю стоит ли приводить пример моих скудных попыток

один из вариантов моих попыток

app.use((req, res, next) => {
    console.log('++++++++++++++++++++++++++++++++++++++++++', req.url === '/admin/');
    console.log('++++++++++++++++++++++++++++++++++++++++++', req.url);
    if (req.url[0] === '/admin/') {
        express.static(path.join(__dirname, `admin`), { index: 'none' })
    } else {
        express.static(path.join(__dirname, `src`), { index: 'none' })
    }
    next()
})

Получаю вот такой ответ в консоли

введите сюда описание изображения

но все же статические файлы не грузятся

Подскажите что я делаю не так


Ответы (1 шт):

Автор решения: ksa

если путь начинается просто /, чтобы грузились статические файлы только из папки src

app.use("/", express.static("src"));

если путь начинается просто /admin, чтобы грузились статические файлы только из папки admin

app.use("/admin", express.static("admin"));

Папки src и admin указаны "относительно текущей директории". Если папка в другом месте - придется формировать правильный путь к папке, используя специальную переменную __dirname.

Более подробная информация в статье https://metanit.com/web/nodejs/4.4.php

Вот рабочий вариант сервера с папками src и admin...

const express = require("express");

const app = express();

app.use(express.json());
app.use('/', express.static(`src`));
app.use('/admin', express.static(`admin`));

app.listen(8080, () => console.log(`Server is run on port 8080`))
→ Ссылка