Express JS обслуживать папку publi c через конечную точку GET - PullRequest
1 голос
/ 14 июля 2020

У меня есть папка с именем my-folder, а внутри разные папки, я пытаюсь обслуживать HTML и активы, такие как JS и CSS, когда я go на маршруте, используя Express JS, я пытаюсь сделать:

router.get('/serve/test', (req, res) => {
  app.use(express.static(path.join(__dirname, 'my-folder/test/public')))
})

Внутри my-folder есть разные папки, и в каждой из них снова разные папки, и я хотел бы иметь возможность обслуживать папки Каталог public из любой папки внутри my-folder, чтобы ссылаться на JS, HTML и CSS при переходе в: http://example.com/serve/test

Прямо сейчас я жестко запрограммировал папку test, но это можно изменить с помощью параметра ...

Есть мысли, почему это не работает?

1 Ответ

1 голос
/ 14 июля 2020

Если вы заранее знаете родительские папки. Вы можете использовать несколько express.static за пределами router.get. Примерно так:

app.use(express.static(path.join(__dirname, 'my-folder/test/public')))
app.use(express.static(path.join(__dirname, 'my-folder/test2/public')))
...
app.get(...)

Если вы заранее не знаете имена папок, вам нужно будет построить его как маршрут и вернуть файлы с помощью res.sendFile:

app.get('/my-folder/:uid/*', function(req, res){
  var uid = req.params.uid, path = req.params[0] ? req.params[0] : 'index.html';
  res.sendFile(path, {root: `./my-folder/${uid}/public/`});
});

пример выше будет обслуживать запрошенный файл пути или "index. html", если путь не указан.

...