コンパイルされた 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
解決策はありますか?
コンパイルされた 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
解決策はありますか?
エラー メッセージと StackOverflow タグから、Chrome を使用しているようです。バージョン 57 (WebAssembly が最初に出荷されたバージョン) の時点で、ChromeはWebAssembly.Module
. これには、ワーカーだけでなく IndexDB への保存も含まれpostMessage
ます。
ご指摘のとおり、 IndexDB は実際に WebAssembly によって仕様化され、MDNで文書化されていますが、必ずしもすべてのブラウザーで実装されているわけではありません。失敗を優雅に処理する必要があります。これはとにかく必要です。IndexDB は他の理由で失敗することが許されています。ブラウザがサポートしている場合でも、構造化された複製は失敗する可能性があります!
V8 には、この動作を変更するためのコマンド ライン フラグがあります: --wasm-disable-structured-cloning=false
. Chrome でも同じ動作を変更できますchrome://flags/#enable-webassembly
(ブラウザのナビゲーション バーにこの URL を入力し、オプションを変更して、ブラウザを再起動します)。
Firefox は、バージョン 52 (WebAssembly を出荷する最初のもの) の時点で構造化クローンをサポートしていることに注意してください。