重新加载/刷新操作时出现 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)时,请尝试删除导出生成的所有文件的文件扩展名中的.html
,index.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 错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Angular 7、NGINX 和 Docker 刷新页面时出现 404 错误
Angular 2:当我通过浏览器刷新时出现 404 错误[重复]