首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应错误:火狐中的"SharedArrayBuffer未定义“

反应错误:火狐中的"SharedArrayBuffer未定义“
EN

Stack Overflow用户
提问于 2020-11-02 17:11:29
回答 4查看 20K关注 0票数 15

我有一个用“创建-反应-应用程序”创建的reason应用程序(我也使用jsdom NPM包),出于某种原因,应用程序只在火狐中抛出一个错误(在Chrome &Edge中运行得很好)。

以下是错误:

代码语言:javascript
复制
ReferenceError: SharedArrayBuffer is not defined
./node_modules/jsdom/node_modules/webidl-conversions/lib/index.js
C:/Or/Web/WorldCovid/WorldCovid/node_modules/jsdom/node_modules/webidl-conversions/lib/index.js:347

  344 | 
  345 | const abByteLengthGetter =
  346 |     Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
> 347 | const sabByteLengthGetter =
  348 |     Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, "byteLength").get;
  349 | 
  350 | function isNonSharedArrayBuffer(V) {

在谷歌搜索之后,我发现:

“要在火狐中启用SharedArrayBuffer,转到约:配置并将javascript.options.shared_memory首选项设置为true”(https://github.com/ggerganov/kbd-audio/issues/9)

问题是,它已经启用为真。

以前有没有人面对过这个问题?谢谢。

更新:

试图转换为:

代码语言:javascript
复制
const shared = new SharedArrayBuffer(1024);

const abByteLengthGetter =
    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
const sabByteLengthGetter =
    Object.getOwnPropertyDescriptor(shared.prototype, "byteLength").get;

仍然得到相同的错误(与SharedArrayBuffer对象不同的行)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-11 22:24:13

您需要为文档设置两个响应头:

跨源-开放-政策:相同-来源交叉-嵌入-政策:要求-公司

这些是使用SharedArrayBuffer的新的安全要求。

如果启用了跨源隔离,则可以签入代码:

如果(crossOriginIsolated) { // SharedArrayBuffer可用}

对象/SharedArrayBuffer

票数 9
EN

Stack Overflow用户

发布于 2021-06-09 08:20:48

反应问题一直是固定和释放17.0.2。他们说,没有计划支持对旧版本的更改,但这不应该是一个大问题,除非你期待高精度的性能测量的反应。

自从Chrome桌面被发现以来,除了Chrome桌面之外,所有浏览器都禁用了SharedArrayBuffer,但Chrome桌面也禁用了从Chrome92开始的浏览器。您需要“跨源隔离”来启用它。

当您遇到一个问题:Uncaught ReferenceError: SharedArrayBuffer is not defined on Chrome,您将需要应用“跨源隔离”继续使用SharedArrayBuffer,但作为一个逃生舱口,您可以请求原产审判允许您的网站继续使用SharedArrayBuffer而不跨源隔离,至少在Chrome 96。

要启用跨源隔离,必须将两个HTTP头(COOP和COEP)发送为@stephane k。

若要了解有关跨源隔离的更多信息,请阅读:

票数 9
EN

Stack Overflow用户

发布于 2021-08-19 09:36:15

在index.html文件中,添加如下脚本。我想这会有帮助的。我做到了。

代码语言:javascript
复制
<body>
<script>
  if (!crossOriginIsolated) SharedArrayBuffer = ArrayBuffer;
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="app"></div>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64650119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档