Вы создаете только один маршрутизатор в userService.js
(первый файл). Он создается один раз перед функцией, поэтому у вас действительно только один маршрутизатор. В первый раз, когда вы require
создаете маршрутизатор, но во второй раз, когда require
этот узел узнает, что он уже загружен и он не инициализирован повторно. Для каждого случая вы должны создавать разные маршрутизаторы, например:
const express = require('express');
// const router = express.Router(); <-- don't do it here
const path = require('path');
const config = require('../config');
const serviceAdapter = require('./serviceAdapter');
module.exports = (preRequestPath, serviceBaseUrl) => {
const router = express.Router(); // <--- create a new router for each case
console.log("On server start", preRequestPath)
router.post('/*', (req, res) => {
console.log("On request", preRequestPath)
const axiosHttp = serviceAdapter(serviceBaseUrl);
axiosHttp.post(preRequestPath+req.path, req.body).then(resp => {
res.send(resp.data)
}).catch(err => {
res.status(404).sendFile(path.join(__dirname + '/../404.html'));
});
});
return router;
}
Кроме того, в файле вашего основного сервера он требуется только один раз. Это просто функция для создания службы, поэтому вам не нужны 2 разные переменные, содержащие эту функцию. Таким образом, вы можете инициализировать оба с помощью одной функции, как это:
// const userApiService = require('./routes/userService');
// const userAdminService = require('./routes/userService');
const service = require('./routes/userService');
app.use('/api/user_service/', service("/api", config.userServiceUrl) );
app.use('/admin/user_service/', service("/admin", config.userServiceUrl) );