Nextjs生产构建问题(链接不起作用)

问题描述 投票:1回答:1

我已经在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 })
  })


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

reactjs express next.js
1个回答
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()}`;
    }
  },
  ...
}

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

© www.soinside.com 2019 - 2024. All rights reserved.