Description
Describe the Bug
webpack v4 used in this template fails to parse WASM file generated by Rust 1.82+.
Steps to Reproduce
rustup default 1.82.0
npm run start
- See error:
ERROR in ./pkg/index_bg.wasm
Module parse failed: Internal failure: parseVec could not cast the value
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
Expected Behavior
Template should work without errors with latest Rust compiler.
Actual Behavior
Template doesn't work with Rust 1.82+compiler.
Additional Context
Starting from Rust 1.82.0 (released 2024-10-17) Reference types are enabled for WebAssembly target by default, see rust-lang/rust#128475. Reason for this change was just upgrade to LLVM 19, see WebAssembly/tool-conventions#233.
This broke webpack, because it uses webassemblyjs to parse WASM files and the latter didn't have Reference types support, see webpack/webpack#15566 (opened 2022-03-20, long before Rust 1.82.0 release).
webassemblyjs v1.14.1 (released 2024-11-06, 3 weeks after Rust 1.82.0 release) added working support for Reference types.
webpack v5.97.0 (released 2024-12-03, 1.5 months after Rust 1.82.0 release) finally added support for WebAssembly Reference types.
Also see related wasm-bindgen issue rustwasm/wasm-bindgen#4211 (opened 2024-10-18).