Express + Typescript + React: Ошибка: ENOENT: такого файла или каталога нет, stat '/app/frontend/build/index.html'? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть этот экспресс-сервер в TS, и это преобразованный JS, код:

class App {
    constructor() {
        this.app = express();
        ...
        this.config();
        ...
    }
    config() {
        if (process.env.NODE_ENV === 'production') {
            // Serve any static files
            this.app.use(express.static(path.join(__dirname, '../../frontend/build')));
            // Handle React routing, return all requests to React app
            this.app.get('*', (req, res) => {
                res.sendFile(path.join(__dirname, '../../frontend/build', 'index.html'));
            });
        }
    }
}
exports.default = new App().app;

но я получаю эту ошибку на героку:

Ошибка: ENOENT: нет такого файла или каталога, статистика «/app/frontend/build/index.html'

Я проверил каталоги на heroku, bash и build есть, и это не первый раз, когда я развертываю приложение, но на этот раз это машинопись, я привык к javascript и думаю, что это может быть по-другому? Я на 100% уверен, что папка правильно настроена на config (). Помощь

1 Ответ

0 голосов
/ 30 мая 2019

TypeScript не копирует файлы, которые он активно не компилирует в целевой каталог, например, файлы ресурсов и шаблонов.

Я подозреваю, что index.html не был скопирован в выходной каталог, откуда ваш код разрешает абсолютный путь для res.sendFile(...).

Возможно, вы захотите переместить эти файлы в отдельный каталог, который не затрагивается процессом компиляции TypeScript. В качестве альтернативы, реализуйте задачу gulp или grunt, которая рекурсивно копирует все файлы не-JavaScript, не-JSON и не-TypeScript в вашу выходную папку TypeScript, чтобы все относительные пути разрешались правильно.

Эта тема может вам помочь: Angular 2 + Typescript compiler копирует html и css файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...