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

时间:2018-04-25 08:05:25

标签: reactjs express nextjs

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

如果我运行node server.js,我的生产服务器上运行正常。如果我构建并运行设置为运行npm run start的{​​{1}},则网站无法正常运行。

这是我的next start -p 80代码:

server.js

当服务器正在运行时,我可以查看页面,当我重新加载它时工作正常。如果我尝试加载博客文章或类别/城市/国家,那么它将始终为404.

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); }); 代码的问题还是/ post和/ category的React页面中的问题?

1 个答案:

答案 0 :(得分:3)

您需要运行npm run build然后npm run start。您需要先构建捆绑包,否则不会创建您的页面和nextjs代码。

它适用于dev,因为你不需要为dev构建一个bundle,直接访问代码,但这对于生产来说效率不高。

以下是buildstart的常用代码:

"build": "next build",
"start": "NODE_ENV=production node server.js",

他们需要放在您的package.json中。你已经有了它们,因为你说你正在运行npm run start

有关详细信息,NextJS教程将引导您完成基本的#9 - Deploying a Next.js App