代码之家  ›  专栏  ›  技术社区  ›  Hykilpikonna

部署到CloudFlare后出现JS语法错误

  •  0
  • Hykilpikonna  · 技术社区  · 1 年前

    我有一个使用Svelte(4.2.10)+Vite(5.1.1)+TypeScript(5.2.2)构建的静态网站。

    当我通过跑步来管理开发前端时 vite 在本地,它运行良好,渲染没有任何问题。当我使用构建网站时 vite build 和使用 miniserve 为了服务于dist静态目录,它还可以完全渲染。

    然而,当我在Cloudflare上部署网站并打开已部署的网站时,浏览器会抱怨SyntaxError,并且不会渲染。

    我在创建了一个可重复的最小示例 https://gitlab.com/hykilpikonna/vite-reproducible-bug .再现这种行为所需的唯一依赖性似乎是 core-js 。可以在访问有漏洞的版本 https://test0213.hydev.org/ -此页面应显示“1,2,3,4,5”,但在控制台中显示SyntaxError。

    此错误的某些属性:

    • 当我部署到没有域的Cloudflare页面(即。 https://vite-reproducible-bug.pages.dev/ 按预期工作)
    • 当使用Nginx在本地部署时,无法复制它。
    • 它不会立即出现。只有在打开开发人员控制台时刷新页面后,它才会出现。然而,在错误出现后,刷新页面并不能修复它。
    • 我尝试过不同的浏览器和干净的配置文件,它们都显示了这种行为,所以这不可能是由我的浏览器扩展引起的。

    从头开始复制此错误的步骤:

    1. 使用创建一个vite-svelte项目 npm create vite@latest
    2. 安装 核心js ,导入并在代码中使用
    3. 将其部署到CloudFlare页面(我使用了GitHub和GitLab集成)
    4. 为CloudFlare页面设置CloudFlare域URL。

    enter image description here

    enter image description here

    1 回复  |  直到 1 年前
        1
  •  2
  •   Ry-    1 年前

    Cloudflare自动缩小正在转向 1 .toString 进入 1.toString ,破坏了语法。这已经 a known bug since at least 2022 。考虑到你已经按照最佳实践缩减了你的资产,你应该关闭多余的层;它只会减慢速度,破坏事物。

    该设置可以在您的Cloudflare仪表板中的网站>[您的网站]>速度>优化>内容优化>自动最小化>JavaScript。