重新加载/刷新操作时出现 Nextjs 404 错误

Posted

技术标签:

【中文标题】重新加载/刷新操作时出现 Nextjs 404 错误【英文标题】:Nextjs 404 error on reload/ refresh action 【发布时间】:2020-09-24 05:48:23 【问题描述】:

我将 Nextjs 用于前端应用程序,将 dotnet core 3.1 用于 Web API。有些页面是静态的,有些是动态的,我按照官方documentation 来实现这一点。在开发模式(本地机器)上一切正常。静态和动态路由都正常工作并从 dontnet 核心 Web API 获取数据。

但是,在按照以下步骤发布 Nextjs 应用程序时:

    纱线构建 纱线出口 在项目的根目录下会生成一个 out 文件夹 该文件夹的内容已上传到服务器

之后,部署的文件被上传,当登录到应用程序时,它会重定向到主页(直到这里工作正常),但只要我点击重新加载页面按钮(Chrome),我就会进入 404错误。

查看开发人员工具中的控制台,我得到了这个:

我发现这个 *** link 有同样的问题,但答案是使用 Express 进行服务器路由。在我的情况下,我使用 dotnet core Web API 来处理服务器请求。所以,不知道该怎么做。

有没有办法从客户端解决这个问题?可能是缺少配置?

我在导出时唯一注意到的是一条消息:未找到“exportPathMap”。不知道是不是这个原因。

【问题讨论】:

嗨,迈克,几个问题和考虑: 1. "The content of that folder is uploaded to the server" 它是一个静态网络托管(S3、blob 存储等)? 2.页面account.html在导出文件里面吗?如果是这样,如果您打开http://yourpath/account.html 它会打开页面? 3. "After, the deployed files are uploaded and when loging to the app, it redirects to the main page (until here is working OK)" 我认为是因为您正在执行完整的客户端导航(带有来自 html 的推送历史记录),但是一旦您重新加载页面,路径 /account/ 未注册。 嗨@Pierfrancesco,对于问题#1 和#2,是的。我们使用 AWS S3 来托管站点,account.html 位于它们之间。另外,是的,我们正在进行客户验证。你知道我如何注册/account/,所以它可以在重新加载后呈现? 你好,这是“自制”的东西,但在同样的情况下(我认为)帮助了我。当您在 S3 上上传文件(启用网站托管:docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)时,请尝试删除导出生成的所有文件的文件扩展名中的.htmlindex.html 除外。然后将 ContentType 设置为 text/html 用于您删除扩展名的所有文件。 这方面有什么更新吗? 导出nextjs静态博客时如何去掉.html扩展名? 【参考方案1】:

当我在构建和导出后的所有页面都有“.html”扩展名时,我遇到了类似的问题。我通过 next.config.js 文件中的以下代码解决了它。

next.config.js

module.exports = 
  exportTrailingSlash: true,

注意:请勿在开发过程中使用上述代码。在构建项目之前使用它。

您可以在此处找到文档链接:https://nextjs.org/docs/api-reference/next.config.js/exportPathMap#adding-a-trailing-slash。

更新

上面的代码是我当时使用的 next.js v9.3.4。对于较新版本,应根据文档使用以下代码。

next.config.js

module.exports = 
  trailingSlash: true,

【讨论】:

感谢您提供的有用链接。但也许有一个错字或配置最近发生了变化。目前的配置是 module.exports = trailingSlash: true, 修复到 module.exports = trailingSlash: true, 它在 Dev 中也可以工作,所以请也修复它,我会支持 :)【参考方案2】:

已修复更新你的 nextjs 包

 npm install next@latest

基于你现有的Next js版本,visit here to see if there's any breaking change before updating what you have

【讨论】:

以上是关于重新加载/刷新操作时出现 Nextjs 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 vue3 路由重新加载页面时出现错误 404

使用 Angular 7、NGINX 和 Docker 刷新页面时出现 404 错误

Nuxt 应用程序在部署到现在时在刷新时出现 404 错误

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

Angular 2:当我通过浏览器刷新时出现 404 错误[重复]

页面刷新时出现Amazon AWS S3 404错误