ExpressJS - обслуживание нескольких веб-приложений с разными базовыми каталогами на одном сервере Express - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь обслуживать веб-сайт с разными статическими каталогами для разных маршрутов.

  • Если на маршрут /tools* сделан запрос на получение, я бы хотел использовать *Каталог 1006 * в качестве базового каталога для моего кода внешнего интерфейса.

  • Если для маршрута /net* сделан запрос на получение, я хотел бы использовать каталог /dist/netIdApp/ в качестве базовогокаталог для моего внешнего кода.

  • Если на маршрут * сделан запрос на получение, я хотел бы использовать каталог /dist/homeApp/ в качестве базового каталога для моего кода внешнего интерфейса.

Мне трудно определить, куда вставить строки кода app.use(express.static(__dirname + DIRECTORY));.Сначала я пробовал приведенный ниже код, но быстро понял, что этот код был неправильным, потому что я не хочу объединять каталоги (у них есть конфликтующие имена файлов).

// Tools Routes
app.use(express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
    res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
    });

app.use(express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});


app.use(express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});

Затем я попытался указать маршрутдля каждого из app.uses, как показано ниже.И это, казалось, только отправляло последний маршрут (я также пытался изменить последний app.use с '*' на '/', и это ничего не изменило).Результатом этого является то, что запросы на получение внешнего интерфейса заканчиваются добавлением символа '/' после имени файла, что делает его так, чтобы сервер Express интерпретировал запрос как каталог, а не обычный файл.Я действительно не уверен, почему это происходит.

// Tools Routes
app.use('/tools*', express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
    res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
    });

app.use('/net*', express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});


app.use('*', express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});

Наконец, я попытался поместить строку в соответствующий app.get, но это не сработало правильно (экспресс не отправляетфайлы веб-интерфейса).

// Tools Routes
app.get('/tools*', function(req, res) {
    app.use(express.static(__dirname + '/dist/toolsApp/'));
    res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
    });

// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
  app.use(express.static(__dirname + '/dist/netIdApp/'));
  res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});

// Default Route
app.get('*', function(req, res) {
  app.use(express.static(__dirname + '/dist/homeApp'));
  res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});

Может ли кто-нибудь помочь мне определить, как лучше всего это сделать?Узел: v8.11.2 Экспресс:

1 Ответ

0 голосов
/ 18 мая 2018

Был в состоянии решить проблему, следующий код работал, он просто помещает файлы в address.com/tools/, address.com/net/ и address.com/ соответственно.

// Tools Routes
app.use('/tools*', express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
    res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
    });

app.use('/net*', express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});


app.use('*', express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...