From 4975ca295430f7e4b9faa9861e1f45ef824044e6 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Sun, 10 Feb 2019 13:58:13 -0500 Subject: [PATCH] Don't give up when servers don't set the application/wasm MIME type It is quite annoying when using `python -m SimpleHTTPServer` or equivalent. --- crates/cli-support/src/js/mod.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 8d86487c..c315bc39 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -612,7 +612,17 @@ impl<'a> Context<'a> { memory = __exports.memory = {init_memory}; const response = fetch(module_or_path); if (typeof WebAssembly.instantiateStreaming === 'function') {{ - result = WebAssembly.instantiateStreaming(response, imports); + result = WebAssembly.instantiateStreaming(response, imports) + .catch(e => {{ + console.warn(\"`WebAssembly.instantiateStreaming` failed. Assuming this is \ + because your server does not serve wasm with \ + `application/wasm` MIME type. Falling back to \ + `WebAssembly.instantiate` which is slower. Original \ + error:\\n\", e); + return response + .then(r => r.arrayBuffer()) + .then(bytes => WebAssembly.instantiate(bytes, imports)); + }}); }} else {{ result = response .then(r => r.arrayBuffer())