生产模式中存在Express 404问题的Nextjs

时间:2020-03-14 11:22:29

标签: node.js reactjs express next.js server-side-rendering

我用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>

1 个答案:

答案 0 :(得分:0)

npm run buildnpm run start