Open
Description
Describe the Bug
Given a crate A
with a package.json
next to Cargo.toml
containing NPM package dependencies, running cargo test --target wasm32-unknown-unknown
(or wasm-pack test
) will fail as the required dependencies are not present to be loaded.
It feels like wasm-bindgen
needs to invoke npm install
to install the dependencies in the temporary test directory to install the dependencies prior to running the tests?
Steps to Reproduce
- Set up a crate which creates bindings to a NPM module via
#[wasm_bindgen(module = ...)]
- Add tests using
#[wasm_bindgen_test]
which make use of the bindings - Run
cargo test --target wasm32-unknown-unknown
orwasm-pack test
Minimal example using bindings to React: https://github.com/jpgneves/wbg-test
Expected Behavior
Tests run successfully.
Actual Behavior
The following error is given (for the example linked above):
Running target/wasm32-unknown-unknown/debug/deps/node-f2b1b07656587b53.wasm
Set timeout to 20 seconds...
internal/modules/cjs/loader.js:818
throw err;
^
Error: Cannot find module 'react'
Require stack:
- /home/joao/proj/wbg-test/target/wasm32-unknown-unknown/wbg-tmp/wasm-bindgen-test.js
- /home/joao/proj/wbg-test/target/wasm32-unknown-unknown/wbg-tmp/run.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
at Function.Module._load (internal/modules/cjs/loader.js:667:27)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (/home/joao/proj/wbg-test/target/wasm32-unknown-unknown/wbg-tmp/wasm-bindgen-test.js:4:23)
at Module._compile (internal/modules/cjs/loader.js:999:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Module.require (internal/modules/cjs/loader.js:887:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/home/joao/proj/wbg-test/target/wasm32-unknown-unknown/wbg-tmp/wasm-bindgen-test.js',
'/home/joao/proj/wbg-test/target/wasm32-unknown-unknown/wbg-tmp/run.js'
]
}
error: test failed, to rerun pass '--test node'
Error: Running Wasm tests with wasm-bindgen-test failed
Caused by: failed to execute `cargo test`: exited with exit code: 1
full command: "cargo" "test" "--target" "wasm32-unknown-unknown"
The contents of target/wasm32-unknown-unknown/wbg-tmp
:
package.json
run.js
wasm-bindgen-test_bg.wasm
wasm-bindgen-test.js
Where package.json
contains the declared dependencies:
{
"react": "^17.0.1"
}