1

ローカル マシンでのみ実行するこの実験があります。たとえば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!

4

2 に答える 2

2

このスレッドでは誰かが次のようにクロムを開始することを提案しました

$> chrome --enable-features=SharedArrayBuffer 

つまり、操り人形師の設定に追加でき--enable-features=SharedArrayBufferます!

于 2021-12-27T17:06:02.523 に答える