1

我正在开发我最后一年的项目。开发基于浏览器的 IDE。我正在使用 Pyodide 进行编译。之前运行良好,但是现在尝试运行项目时,遇到了关于 SHAREdArrayBuffer() 的错误。我不知道是什么导致了这个问题。请任何人帮助我,我的最后一年的演讲是下周三,我的项目没有工作。

这是我正在使用它。

readline: () => {
            let sab = new SharedArrayBuffer(2048)
            let sab_int32 = new Int32Array(sab)
            let sab_uint8 = new Uint8Array(sab)

            send('STDIN', sab)

            Atomics.wait(sab_int32, 0, 0)

            let str_len = sab_int32[0]
            let str_uint8 = sab_uint8.slice(4, 4 + str_len)

            return new TextDecoder().decode(str_uint8) + '\n'
        },

至少有另一种方法吗?是的,我正在使用网络工作者。我在 Edge、Firefox 和 Mozilla 上收到此错误。

ReferenceError: SharedArrayBuffer is not defined

我在本地主机上的网站上运行。是因为我的网站没有认证吗?

4

1 回答 1

1

从 Chrome 92 和 Firefox 开始,出于安全原因默认禁用 SharedArrayBuffer。Safari 很久以前就停止支持它了。原因如下:https ://developer.chrome.com/blog/enabling-shared-array-buffer/

要使用它,您需要通过发送一些 HTTP 标头来启用跨域隔离。还有一些额外的要求。您可以在这里了解更多信息:https ://web.dev/coop-coep/

一个快速的逃生方法是在 Chrome 中注册原始试用版。 https://developer.chrome.com/blog/enabling-shared-array-buffer/#origin-trial

于 2021-08-07T15:15:44.113 回答