我有一个用“创建-反应-应用程序”创建的reason应用程序(我也使用jsdom NPM包),出于某种原因,应用程序只在火狐中抛出一个错误(在Chrome &Edge中运行得很好)。
以下是错误:
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)
问题是,它已经启用为真。
以前有没有人面对过这个问题?谢谢。
更新:
试图转换为:
const shared = new SharedArrayBuffer(1024);
const abByteLengthGetter =
Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
const sabByteLengthGetter =
Object.getOwnPropertyDescriptor(shared.prototype, "byteLength").get;仍然得到相同的错误(与SharedArrayBuffer对象不同的行)。
发布于 2021-01-11 22:24:13
您需要为文档设置两个响应头:
跨源-开放-政策:相同-来源交叉-嵌入-政策:要求-公司
这些是使用SharedArrayBuffer的新的安全要求。
如果启用了跨源隔离,则可以签入代码:
如果(crossOriginIsolated) { // SharedArrayBuffer可用}
发布于 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。
若要了解有关跨源隔离的更多信息,请阅读:
发布于 2021-08-19 09:36:15
在index.html文件中,添加如下脚本。我想这会有帮助的。我做到了。
<body>
<script>
if (!crossOriginIsolated) SharedArrayBuffer = ArrayBuffer;
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="app"></div>https://stackoverflow.com/questions/64650119
复制相似问题