我用express创建了一个Next.js项目。我在server.js中定义了一些带有参数的路由,并且可以在开发中正常工作,但是在导出项目之后,在生产模式下刷新该路由页面时,它处于生产模式。我收到来自浏览器的 404 页面未找到错误。 为了生产我执行以下命令 1.npm运行构建 2.npm运行导出
在下面您可以看到我的文件;
server.js
const express = require('express');
const next = require('next');
const port = process.env.PORT || 3001;
const dev=process.env.NODE_ENV !=='production';
const app = next({dev});
const handle = app.getRequestHandler();
app.prepare()
.then(()=>{
const server=express();
server.get('/', (req, res) => {
return app.render(req, res, '/index')
});
server.get('/tour/:num/:name', (req, res) => {
return app.render(req, res, '/tour', { name: req.params.name,num: req.params.num })
});
server.get('*',(req,res)=>{
return handle (req,res);
});
server.listen(port,(err)=>{
if(err) throw err;
console.log(`READY ON http://localhost:${port}`);
})
});
package.json 中的个脚本
"scripts": {
"dev": "node server.js",
"build": "next build",
"export": "next export",
"start": "node server.js"
}
module.export在 next.config.js
中module.exports = withPlugins([[withCSS],[withSass],[withFonts],[withImages]],{ hmr: false },
{
exportPathMap: function() {
return {
'/': { page: '/' },
'/tour': { page: '/tour/:num/:name' }
};
}
}
);
链接(来自下一个/链接)
<Link href={{ pathname: "/tour", query: { name:tourName , num:pkgNum} }} as={`tour/${pkgNum}/${tourName}`}>
<a >
Tour Details
</a>
</Link>
答案 0 :(得分:0)
npm run build
和npm run start