javascript - pyodide : ReferenceError: SharedArrayBuffer is not defined

标签 javascript web-worker sharedarraybuffer

我正在开发我的最后一年项目。开发基于浏览器的 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'
        },

是否至少有一种替代方法可以做到这一点?是的,我正在使用网络 worker 。我在 Edge、Firefox 和 Mozilla 上遇到此错误。

ReferenceError:SharedArrayBuffer 未定义

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

最佳答案

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

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

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

关于javascript - pyodide : ReferenceError: SharedArrayBuffer is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68679432/

相关文章:

javascript - 我如何检查单元格是否有颜色并使用 javascript 获取它们在表格中的位置

javascript - 如何在 javascript 中分解长时间运行的函数,但保持性能

javascript - 如何验证只读文本框以在 javascript 中接受小数点后两位数?

javascript - 在 web worker 中解析 HTML DOM

javascript - 嘿,当使用node.js从html表单将数据插入MySql时,我不知道从哪里开始

javascript - Workbox 缓存策略无法正常工作

javascript - 使用 setTimeout 进行 AJAX Webworker 轮询

javascript - 使用 Service Worker 启用 COOP/COEP header : security concerns?

javascript - Iframe 中的 SharedArrayBuffer