【问题标题】:Error page does not work in production for Sapper export错误页面在 Sapper 导出的生产中不起作用
【发布时间】:2020-11-03 17:38:54
【问题描述】:

使用dev 命令并显示错误/404 页面时,基本上不会捕获现有路由。但是当使用export 并将生成的文件上传到网络服务器时,这不起作用。而是显示索引页面,但没有任何逻辑起作用,例如单击另一个链接进行导航。

我之前在代码中有一个 catch all slug,但删除并删除了由 export 命令生成的所有文件,以确保将其删除。这可能是问题吗? slugs 文件会是什么样子?

【问题讨论】:

  • 您应该使用适当的导出工具而不是sapper export
  • @pishpish sapper export 是合适的推荐工具。

标签: javascript static-files sapper


【解决方案1】:

当使用sapper export 时,脚本将从您的索引页面开始并访问(并呈现)页面上的链接可访问的所有页面。这样,您就有了您的网站的 静态 版本,您可以将其上传到您的主机。它取代了服务器端渲染 sapper 通常所做的工作,但仅对于用户访问的第一页,其余所有将正常开始工作。

由于当用户去某个不存在的地方时会显示 404 页面,因此您将(通常)没有链接,因此脚本不会呈现该页面。

为了告诉 sapper 也抓取该页面,您必须将其添加为入口点

package.json

"export": "sapper export --entry "/ /404""

这个额外的参数将告诉脚本从 /(主索引文件)开始并再次执行整个过程,从 /404 开始(不应该存在并因此抛出您的错误页面)

【讨论】:

  • 这看起来不错。两个简单的问题:您的示例中只有三个 ",不应该更多吗?这在语法上是否正确:"export": "sapper export --entry \"/ /404\"" 我的导出使用了--legacy 参数。这仍然需要吗?
  • 是的,我确实错过了一个“,您仍然可以使用旧参数,为了清楚起见,我从所有不相关的内容中删除了命令
  • 我必须创建一个页面 404.svelte 吗?它不会爬取_error.svelte吗?
  • 不,一旦它找不到页面,它就会渲染 _error.svelte ,但最好将 404 设置为您的条目帖子,因为这将导致导出中的 404 文件大多数托管服务都希望您提供这样的文件
  • 我认为 sapper 导出了一个 文件夹 404(检查输出文件夹),因此您需要在服务器上设置一些重定向,不幸的是不熟悉 aws 存储桶
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 2023-02-03
相关资源
最近更新 更多