Приложение next.js с настраиваемым сервером неправильно отображает - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в next.js, так что, может быть, мне не хватает чего-то очень глупого. Я хочу использовать пользовательские маршруты, поэтому я создал файл server.js и изменил команду package.json на node server.js. Это весь файл server.js:

const express = require("express");
const next = require("next");
const createLocaleMiddleware = require("express-locale");

const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handle = app.getRequestHandler();

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

    server.get("/", createLocaleMiddleware(), (req, res) => {
      res.redirect(`/${req.locale.language}/home`);
    });

    server.get("/:lang/home", (req, res) => {
      const actualPage = "/";
      const queryParams = { locale: req.params.lang };
      app.render(req, res, actualPage, queryParams);
    });

    server.listen(3000, err => {
      if (err) throw err;
      console.log("> Ready on http://localhost:3000");
    });
  })
  .catch(ex => {
    console.error(ex.stack);
    process.exit(1);
  });

Я считаю, что согласно документам это должно работать. Я просто хочу отобразить страницу индекса с языковым стандартом пользователя по указанному маршруту ('/: lang / home'). Я использую Reaction-Intl для i18n.

Теперь я получаю следующую ошибку в консоли (на стороне клиента):

enter image description here

Он на голландском, но просто говорит, что не может найти ни одного из указанных файлов. Так что теперь HMR больше не работает, маршрутизация больше не работает (с Router.push). Единственное, что он делает правильно, это загружает страницу индекса (я вижу это в браузере).

Я также пытался включить и отключить этот флаг в документации:

module.exports = {
  useFileSystemPublicRoutes: false
}

К сожалению, без эффекта.

Я что-то упустил? Это потому что я перенаправляю? Или это не способ справиться с маршрутизацией? Если бы кто-то мог предоставить несколько указателей, это было бы здорово:)

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

1 Ответ

0 голосов
/ 22 мая 2018

Вам не хватает server.get('*', handle), как вы можете видеть в пользовательском экспресс-примере сервера .Это абсолютно необходимо:)

...