Как определить префикс пути в ServeStaticModule? - PullRequest
0 голосов
/ 20 января 2020

Я хочу предоставить некоторую структуру каталогов stati c в соответствии с этими документами https://docs.nestjs.com/recipes/serve-static#serve -stati c, но могу найти ответы на следующие простые вопросы:

  1. Как настроить префикс пути, например '/ some / path / to / files'?
  2. Как настроить обслуживание во время выполнения (путь к файлам - Dynami c и не может быть жестко задан)?

Заранее спасибо.

PS Я видел некоторые ответы о app.useStaticAssets(), но, насколько я понял, это Express конкретное c решение и все равно не будет компилироваться с последней версией (Property 'useStaticAssets' does not exist on type 'INestApplication') ...

Обновление

Например, у меня есть следующие дирактории:

  1. / var / lib / app / data1
  2. / var / lib / app / data2
  3. / home / user / some / path

И я хочу, чтобы он обслуживался как:

  1. http://localhost: 3000 / путь1
  2. http://localhost: 3000 / путь333
  3. http://localhost: 3000 / мои / смешные / кошки

Ответы [ 2 ]

0 голосов
/ 21 января 2020

rootPath определяет root того, где находится содержимое stati c:

@Module({
    imports: [
        ServeStaticModule.forRoot({
            rootPath: join(__dirname, '..', 'static'),
        }),
    ],
})

В этом случае root является папкой static.

Например, вы можете иметь следующую структуру:

static
    page
      png
        sky.png
      index.html

Для получения sky.png запрос будет: http://localhost:3000/page/png/sky.png

Для получения индекса. html запрос будет: http://localhost:3001/page/index.html

Кроме того, вот документация для ServeStaticModuleOptions: https://github.com/nestjs/serve-static/blob/master/lib/interfaces/serve-static-options.interface.ts

Я хотел бы обратить ваше внимание на renderPath. Я не нахожу документацию для renderPath очень ясной, но здесь, в этом отчете об ошибке, ожидаемое поведение состоит в том, что renderPath повторно сопоставляет локальный путь с URL-адресом, как вы хотели: https://github.com/nestjs/serve-static/issues/26

Вы также можете взглянуть на Express / Fastify, чтобы увидеть, как там обрабатывается эта опция, поскольку это серверы, используемые под крышкой.

0 голосов
/ 21 января 2020

Вы можете установить параметры renderPath на ServeStaticModule. Обычно путь равен '*', поэтому все, что не соответствует вашим другим заданным маршрутам, пытается отправить через res.sendFile(). Если вы хотите сделать это some/path/to/file, вы можете установить renderPath: 'some/path/to/files/*, и это должно сработать.

...