页面重新加载后的ReactJS和Next.js 404

页面重新加载后的ReactJS和Next.js 404,reactjs,express,nextjs,Reactjs,Express,Nextjs,我在我的Wordpress博客上有一个react前端,如果我运行node server.js,它会工作得很好。我可以在任何页面上重新加载,它将按预期工作 在我的生产服务器上,如果我运行node server.js,那么它可以正常工作。如果我构建并运行npm run start,设置为runnext start-p80,则网站无法正常工作 这是我的server.js代码: const compression = require('compression'); const express = req

我在我的Wordpress博客上有一个react前端,如果我运行
node server.js
,它会工作得很好。我可以在任何页面上重新加载,它将按预期工作

在我的生产服务器上,如果我运行
node server.js
,那么它可以正常工作。如果我构建并运行
npm run start
,设置为run
next start-p80
,则网站无法正常工作

这是我的
server.js
代码:

const compression = require('compression');
const express = require("express");
const next = require("next");

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

app

  .prepare()
  .then(() => {

    const server = express();

    server.use(compression());
    server.use(express.static(__dirname + '/static', { maxAge: 31557600 }));

    server.get('/about', (req, res) => {
      app.render(req, res, '/about');
    });

    server.get('/post/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, apiRoute: 'post' };
      app.render(req, res, '/post', queryParams);
    });

    server.get('/page/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, apiRoute: 'page' };
      app.render(req, res, '/post', queryParams);
    });

    server.get('/city/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, taxonomy: 'city' };
      app.render(req, res, '/category', queryParams);
    });

    server.get('/country/:slug', (req, res) => {
      const queryParams = { slug: req.params.slug, taxonomy: 'country' };
      app.render(req, res, '/category', queryParams);
    });

    server.get('/_preview/:id/:wpnonce', (req, res) => {
      const queryParams = { id: req.params.id, wpnonce: req.params.wpnonce };
      app.render(req, res, '/preview', queryParams);
    });

    server.get("*", (req, res) => {
      return handle(req, res);
    });

    server.listen(process.env.NODE_PORT, err => {
      if (err) throw err;
      console.log("> Ready on port " + process.env.NODE_PORT);
    });

  })

  .catch(ex => {

    console.error(ex.stack);
    process.exit(1);

  });
当服务器运行next时,我可以查看页面,当我重新加载时,它工作正常。如果我尝试加载一篇博客文章或类别/城市/国家,那么它总是404


这是
server.js
代码的问题还是/post和/category的React页面中的问题?

您需要运行
npm run build
,然后运行
npm run start
。您需要首先构建bundle,否则将无法创建页面和nextjs代码

它可以在dev上工作,因为您不需要为dev构建捆绑包,代码可以直接访问,但这对生产效率不高

以下是
构建
启动
的常用代码:

"build": "next build",
"start": "NODE_ENV=production node server.js",
它们需要放在您的
包.json
中。您可能已经有了它们,因为您说您正在运行
npm run start


有关更多信息,NextJS教程将在basic的第9部分中引导您了解这一点-

您可能有在端口80上运行的apache或nginx或类似产品。检查应用程序日志消息,如果它在控制台上打印了一些内容。它在运行时会显示react 404页面,如果我停止react服务器,则不会显示任何内容。是否可以公开测试