Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有自定义服务器的next.js应用程序未正确呈现_Javascript_Express_Next.js - Fatal编程技术网

Javascript 带有自定义服务器的next.js应用程序未正确呈现

Javascript 带有自定义服务器的next.js应用程序未正确呈现,javascript,express,next.js,Javascript,Express,Next.js,我是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 =

我是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')上呈现带有用户区域设置的索引页。我用的是i18n

现在,我在控制台(客户端)中遇到以下错误:

它是荷兰语的,但它只是说它找不到任何指定的文件。所以现在HMR不再工作了,路由也不再工作了(使用Router.push)。它唯一正确的操作是加载索引页(我可以在浏览器中看到它)

我还尝试从文档中启用和禁用此标志:

module.exports = {
  useFileSystemPublicRoutes: false
}
遗憾的是,没有效果

我错过什么了吗?是因为我在重定向吗?或者这不是处理路由的方法?如果有人能提供一些建议,那就太好了:)


提前谢谢

您缺少服务器。
get('*',handle)
,如中所示。这是绝对必要的:)