`express.static` не работает внутри` express-promise-router` - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь выполнить рефакторинг определенного статического маршрута в моем экспресс-приложении.

Во-первых, если я сделаю следующее внутри index.ts, , все будет работать нормально :

import * as express from 'express';
const app = express();
app.use('/something', express.static(path.join(__dirname, '../', 'something')));

Однако я хочу сделать свой код более аккуратным, поэтому мне нужно выполнить рефакторинг в отдельные файлы-обработчики маршрутов, т. Е. Я создаю route/something.ts для обработки маршрута к /something. Итак, я сделал следующее:

Внутри index.ts стало:

import * as express from 'express';
const app = express();
app.use('/something', require('./route/something.ts);

и внутри ./route/something.ts:

import * as express from 'express';
import PromiseRouter from 'express-promise-router';
const router = PromiseRouter();
router.route('/')
                .get(express.static(path.join(__dirname, '../../', 'something')));
module.exports = router;

обратите внимание, что я уже изменил структуру dir с ../ на ../.., но почему-то все равно не работает при попытке достичь конечной точки API localhost:3000/something/static.jpg, возвращается ошибка

<code><!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>Cannot GET /something/static.jpg

почему это происходит? как это решить? Спасибо

1 Ответ

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

Эта строка (в route/something.ts):

router.route('/')
                .get(express.static(path.join(__dirname, '../../', 'something')));

Должен быть изменен на:

router.use('/', express.static(path.join(__dirname, '../../', 'something')));

Вам также не нужно использовать express-promise-router, вы можете просто создать маршрутизатор, используя const router = express.Router().

См. документы по маршрутизации для получения дополнительной информации об этом.

...