wasm-bindgenを全く使わないWebAssembly開発から、同プロジェクトをwasm-bindgenを利用した環境に移行した際にハマったエラーについて解決したポイントをメモしておきます。
環境
rustのバージョン
$ rustc --version
$ rustc 1.30.0-nightly (f49f6e73a 2018-09-23)
利用しているcrateのバージョン
cargo.toml
[dependencies]
cfg-if = "0.1.2"
wasm-bindgen = "0.2"
状況
$ npm init wasm-app XXX
のように、npm環境を用意しwasmをjsからimportする環境でのwebpackによるビルド時に下記のようなエラーが発生する
$npm run build (→ webpack --config webpack.config.js)を実行
ERROR in ../pkg/wazf_bg.wasm
Module not found: Error: Can't resolve 'env' in '/var/www/wasm-fzf/pkg'
※ pkg配下にwasmが生成されるのはwasm-packによるビルドのため
解決策
rust上でJSの関数を使うためにexternしている記述を削除できれば削除してみる。
(削除できなければwasm-bindgenでサポートされている形に修正してみても良いと思います)
XXX.rsのdiff
- extern {
- fn logging(n: i32);
- }
振り返ってみるとたったそれだけなんですが、Module not found: Error: Can't resolve 'env' ~~
のエラーからはなかなかたどり着けなかったので、同じようにハマった人のため参考になれば幸いです