Nextjs生产版本问题(链接不起作用)

时间:2019-12-07 15:35:11

标签: reactjs express next.js

我已经在next.js和expressjs中建立了一个网站,并且在开发中效果很好。但是当我运行next build时,得到的东西在开发中是不会发生的。

我只想写一些仅在生产中发生的要点。

  • 很少有链接不起作用
<li style={{marginLeft: '-50px'}}>
     <Link href={`/profile/?user_slug=${router.query.user_slug}`} as={`/profile/${router.query.user_slug}`}>
        <a className={`${classes.textSize} ${router.route === "/profile/user_slug" ? classes.active1 : ''}`}>User</a>
     </Link>
</li>
<li>
      <Link  href={`/profile/?user_slug=${router.query.user_slug}/questions`} as={`/profile/${router.query.user_slug}/questions`}>
        <a className={`${classes.textSize} ${router.route === "/profile/user_slug/questions" ? classes.active1 : ''}`}>Ques</a>
      </Link>
</li>

当我在特定页面上时,导航栏中的链接很少起作用。我有路线https://example.com/profile/user_name。这里的user_name是动态的。我在个人资料页面上时注意到,如果我尝试访问家中或问题路线,则此操作无效。

在布局中我有

{!mobile && <Button className={classes.button}><Link href='/'><a className={classes.link}>Home</a></Link></Button>}
{!mobile && <Button className={classes.button}><Link href='/questions'><a className={classes.link}>Questions</a></Link></Button>}

这两个简单的链接不起作用。我不知道为什么

我已经用快递定义了所有路线

  app.get('/profile/:user_slug', (req, res) => {
    return nextApp.render(req, res, '/profile/user_slug', { user_slug: req.params.user_slug })
  })

  app.get('/profile/:user_slug/questions', (req, res) => {
    return nextApp.render(req, res, '/profile/user_slug/questions', { user_slug: req.params.user_slug })
  })

  app.get('/profile/:user_slug/followers', (req, res) => {
    return nextApp.render(req, res, '/profile/user_slug/followers', { user_slug: req.params.user_slug })
  })

  app.get('/profile/:user_slug/followings', (req, res) => {
    return nextApp.render(req, res, '/profile/user_slug/followings', { user_slug: req.params.user_slug })
  })


如何解决生产问题。一切都在开发中运作良好。

1 个答案:

答案 0 :(得分:0)

让我们检查一下这篇文章:solving-next-static-pages-js-404-not-found

  

next.config.js

module.exports = {
  ...
  distDir: "_next",
  generateBuildId: async () => {
    if (process.env.BUILD_ID) {
      return process.env.BUILD_ID;
    } else {
      return `${new Date().getTime()}`;
    }
  },
  ...
}

如果上述方法没有帮助您。请仔细检查生产服务器上正在运行的实例。也许运行的不仅仅是一个具有不同捆绑软件的应用程序实例,而且您在争夺源代码。