ローカル マシンでのみ実行するこの実験があります。たとえばhttps://example.com
、から外部 Web ページを読み込みますhttp://localhost:5000
。
これまでのところ問題はありません。しかし、この注入された JavaScript ファイルは WebAssembly ファイルをロードし、次のエラーが発生します。
Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
....
実際、SharedArrayBuffer は定義されていない (Chrome v96) ため、コードがまったく機能しません (以前は機能していました)。私の質問は、どうすればこのエラーを解決できますか?
これについてもっと読むと、2つのヘッダーを追加できるようです
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
私は両方のファイルに対してこれを行いましたが、あまり成功しませんでした。ページが挿入された js および WASM ファイルとは異なるドメインからのものであることを考えると、おそらくこれは機能しません。
しかし、おそらく別の解決策が考えられます。クロムを起動するコマンドは次のとおりです
client.browser = await puppeteer.launch({
headless: false,
devtools: true,
defaultViewport: null,
executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
args: [
'--debug-devtools',
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-web-security',
'--allow-running-insecure-content',
'--disable-notifications',
'--window-size=1920,1080'
]
//slowMo: 500
});
クロムにはオプションが多すぎることはわかっているので、この SharedArrayBuffer の問題にもオプションがあるのではないでしょうか?
誰かがこれがどのように機能するかを知っていて、私を助けてくれることを願っています, Thnx!