diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d143880df3..f579eb1b17b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,9 @@ * Fixed multiline doc comment alignment and remove empty ones entirely. [#4135](https://github.com/rustwasm/wasm-bindgen/pull/4135) +* Fixed `experimental-nodejs-module` target when used with `#[wasm_bindgen(start)]`. + [#4093](https://github.com/rustwasm/wasm-bindgen/pull/4093) + -------------------------------------------------------------------------------- ## [0.2.93](https://github.com/rustwasm/wasm-bindgen/compare/0.2.92...0.2.93) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index b7523e6089e..6256679021c 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -483,6 +483,25 @@ impl<'a> Context<'a> { module_name )))); } + + match self.config.mode { + OutputMode::Bundler { .. } => { + start.get_or_insert_with(String::new).push_str(&format!( + "\ +import {{ __wbg_set_wasm }} from \"./{module_name}_bg.js\"; +__wbg_set_wasm(wasm);" + )); + } + + OutputMode::Node { module: true } => { + start.get_or_insert_with(String::new).push_str(&format!( + "imports[\"./{module_name}_bg.js\"].__wbg_set_wasm(wasm);" + )); + } + + _ => {} + } + if needs_manual_start { start .get_or_insert_with(String::new) diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index bd47dfc43b0..188d674df9c 100755 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -701,10 +701,8 @@ impl Output { write( &js_path, format!( - " -import {{ __wbg_set_wasm }} from \"./{js_name}\"; + "\ {start} -__wbg_set_wasm(wasm); export * from \"./{js_name}\";", ), )?; @@ -712,10 +710,8 @@ export * from \"./{js_name}\";", write( &js_path, format!( - " + "\ import * as wasm from \"./{wasm_name}.wasm\"; -import {{ __wbg_set_wasm }} from \"./{js_name}\"; -__wbg_set_wasm(wasm); export * from \"./{js_name}\"; {start}" ),