0

コンパイルされた wasm モジュールを chrome に保存しようとすると、次のエラーが表示されます: Failed to execute 'put' on 'IDBObjectStore': An object could not be cloned.

しかし、MDNによれば、それは可能であるはずです。 https://developer.mozilla.org/en-US/docs/WebAssembly/Caching_modules

解決策はありますか?

4

1 に答える 1

1

エラー メッセージと StackOverflow タグから、Chrome を使用しているようです。バージョン 57 (WebAssembly が最初に出荷されたバージョン) の時点で、ChromeWebAssembly.Module. これには、ワーカーだけでなく IndexDB への保存も含まれpostMessageます。

ご指摘のとおり、 IndexDB は実際に WebAssembly によって仕様化され、MDNで文書化されていますが、必ずしもすべてのブラウザーで実装されているわけではありません。失敗を優雅に処理する必要があります。これはとにかく必要です。IndexDB は他の理由で失敗することが許されています。ブラウザがサポートしている場合でも、構造化された複製は失敗する可能性があります!

V8 には、この動作を変更するためのコマンド ライン フラグがあります: --wasm-disable-structured-cloning=false. Chrome でも同じ動作を変更できますchrome://flags/#enable-webassembly(ブラウザのナビゲーション バーにこの URL を入力し、オプションを変更して、ブラウザを再起動します)。

Firefox は、バージョン 52 (WebAssembly を出荷する最初のもの) の時点で構造化クローンをサポートしていることに注意してください。

于 2017-03-21T20:12:49.830 に答える