【问题标题】:SharedArrayBuffer not defined when using Cypress使用赛普拉斯时未定义 SharedArrayBuffer
【发布时间】:2023-01-16 03:27:49
【问题描述】:

我正在使用 Vite 和 Cypress 进行开发和测试

我正在加载 ffmpeg,它在 Chrome 上加载正常,但在 Cypress 上,它给出了这个错误

ReferenceError: SharedArrayBuffer is not defined

显然,这是由跨源隔离引起的。

我尝试在 Cypress.json 中禁用网络安全,但没有帮助

示例代码

import { createFFmpeg } from "@ffmpeg/ffmpeg"

const ffmpeg = createFFmpeg({ log: true })
ffmpeg.load()

有解决方法吗?

最小复制 https://github.com/unlocomqx/cypress-ffmpeg

【问题讨论】:

    标签: ffmpeg cypress sharedarraybuffer


    【解决方案1】:

    我在我的项目中遇到了同样的问题,我可以用你的例子重现你的错误。

    尝试将您的 Cypress 版本切换回 8.5.0 并使用 Electron 浏览器运行测试。 到目前为止,这是我的解决方法......

    从 Cypress 8.5.0 到 8.6.0,他们将 Electron 版本从 13.2.0 更新到 14.1.0: https://docs.cypress.io/guides/references/changelog#8-6-0

    我会在赛普拉斯论坛发帖寻求帮助,并链接这篇帖子。

    赛普拉斯问题链接:https://github.com/cypress-io/cypress/issues/19912

    感谢示例回购。

    【讨论】:

      【解决方案2】:

      无论您使用什么服务器,它都需要向客户端发送以下标头。

      Cross-Origin-Opener-Policy:同源

      跨域嵌入策略:require-corp

      出于安全原因,SharedArrayBuffer 在服务器响应中没有这些标头的情况下被禁用。

      【讨论】:

        猜你喜欢
        • 2020-03-17
        • 2022-07-22
        • 2022-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 2021-07-21
        相关资源
        最近更新 更多