我已经在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>}
这两个简单的链接不起作用。我不知道为什么
我在控制台中看到404之类的错误
https://example.com/_next/static/u46GEnW5PnfCBXwLuWy-M/pages/category/%5Bcategory_name%5D.js净值:: ERR_ABORTED 404(未找到)
https://example.com/_next/static/u46GEnW5PnfCBXwLuWy-M/pages/question.js net :: ERR_ABORTED 404(未找到)
我已经用快递定义了所有路线
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 })
})
如何解决生产问题。一切都在开发中运作良好。
答案 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()}`; } }, ... }
如果上述方法没有帮助您。请仔细检查生产服务器上正在运行的实例。也许运行的不仅仅是一个具有不同捆绑软件的应用程序实例,而且您在争夺源代码。