页面重新加载后的ReactJS和Next.js 404
我在我的Wordpress博客上有一个react前端,如果我运行页面重新加载后的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
node server.js
,它会工作得很好。我可以在任何页面上重新加载,它将按预期工作
在我的生产服务器上,如果我运行node server.js
,那么它可以正常工作。如果我构建并运行npm run start
,设置为runnext 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服务器,则不会显示任何内容。是否可以公开测试