Таким образом, (исходя из экспериментов, поскольку этого нет в документе), кажется, что когда вы передаете массив маршрутов, Express находит первый элемент в массиве, который совпадает с текущим путем, и вызывает обработчик маршрута для этого. только. Даже если есть другие маршруты, которые также будут соответствовать (как в вашем случае), он не будет повторно вызывать обработчик маршрута для них.
Так, потому что '/'
соответствует ВСЕМ маршрутам при использовании с app.use()
,он всегда будет использовать этот, и, следовательно, другие никогда не будут работать должным образом при использовании массива, но будут работать правильно, когда указаны в качестве отдельных маршрутов. Вы можете исправить это, убедившись, что самые разрешающие маршруты являются последними. Итак, измените ваш массив следующим образом:
const static = express.static(path.join(__dirname, '../build'));
const routes = ['/projects','/project1','/blog', '/'];
app.use(routes, static);
Это переместит '/'
в конец, так что остальные получат шанс на совпадение до того, как будет рассмотрен '/'
и. '/'
будет использоваться только тогда, когда путь не был другим../build
каталог для express.static()
, чтобы посмотреть там. Там нет причин, вам нужно сделать это таким образом. Это кажется искусственно созданной проблемой из-за вашего дизайна URL. Это приведет к тому, что URL-адреса, такие как /x.js
, /projects/x.js
и /blog/x.js
, будут преобразованы в точно такой же файл x.js
в каталоге ../build
.