express.static()
возвращает промежуточное ПО функция . Затем предполагается, что эта функция передается в обработчик промежуточного программного обеспечения, который, в свою очередь, вызывает эту функцию , когда ее маршрут совпадает:
const staticMiddleware = express.static(path.join(__dirname, 'portfolio', 'loanamort', 'build'));
// staticMiddleware holds a reference to a **function**!
app.use(staticMiddleware);
Итак, чтобы чтобы ваш код заработал, вы должны вызвать эту функцию в вашем обработчике маршрута:
// Declare the middleware outside of ".use()", so that you don't re-instantiate
// it for every request.
const staticMiddleware = express.static(path.join(__dirname, 'portfolio', 'loanamort', 'build'));
router.use('/loanamort', (req, res, next) => {
staticMiddleware(req, res, next);
})
staticMiddleware
сама вызовет next()
, поэтому этот код должен работать очень хорошо. Подробнее о express middleware здесь: http://expressjs.com/en/guide/using-middleware.html#using -middleware .
Однако вы можете просто указать путь, по которому должен использоваться сервер stati c:
app.use('/loanamort', express.static(path.join(__dirname, 'portfolio', 'loanamort', 'build')));
Очевидно, когда вы это видите, не так ли? Узнайте больше об этом решении и express.static()
здесь: http://expressjs.com/en/starter/static-files.html#serving -stati c -files-in- express.
Иногда я буду использовать выше, более сложное решение когда я хочу изменить функцию промежуточного программного обеспечения перед ее вызовом.