Stati c файлы внутри `public` папки не обслуживаются (Далее JS пользовательский сервер, использующий ExpressJS) - PullRequest
1 голос
/ 04 февраля 2020

Я работаю над NextJS приложением. И я сделал пользовательский сервер, используя ExpressJS. Проблема заключается в том, что когда я запускаю приложение с пользовательского сервера, приложение не может найти файлы stati c в папке public.

Примечание. У меня нет проблем при запуске приложение использует next dev

Мой сервер

const express = require('express');
const next = require('next');
const path = require('path');

const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

const prefix = (path = '') => `/:lang(en|tr)?`.concat(path);

app.prepare().then(() => {
    const server = express();

    server.get(prefix('/'), (req, res) => app.render(req, res, '/', req.query));
    server.get(prefix('/agency'), (req, res) => app.render(req, res, '/agency', req.query));
    server.get(prefix('/cases'), (req, res) => app.render(req, res, '/cases', req.query));
    server.get(prefix('/blog'), (req, res) => app.render(req, res, '/blog', req.query));
    server.get(prefix('/contact'), (req, res) => app.render(req, res, '/contact', req.query));

    server.get(prefix('/image.png'), (req, res) => app.render(req, res, '/public/images/avatar01.jpg', req.query));

    server.listen(port, err => {
        if (err) throw err;
        console.log(`> Ready on http://localhost:${port}`);
    });
});

1 Ответ

0 голосов
/ 20 апреля 2020

Это потому, что вы не реализуете запасной вариант для случаев, когда нет совпадения:

server.all('*', async (req, res) => {
  return handle(req, res);
}

будет обрабатывать все другие маршруты для вас (API-маршруты, общедоступная / stati c папка и т. Д. c).

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