wasmerio/wasmer · error · anyhow::Error
No backends support the required features for the Wasm modul
Error message
No backends support the required features for the Wasm module. Feel free to open an issue at https://github.com/wasmerio/wasmer/issues
What it means
When filtering the available backends by the module's required features leaves an empty list, no compiler in this binary can run the module, so get_engine_for_features bails with this message. It points users to file an issue because it usually means a feature/backend support gap in Wasmer itself.
Source
Thrown at lib/cli/src/backend.rs:328
if filtered_backends.is_empty() {
let enabled_backends = BackendType::enabled();
if backends.len() == 1 && enabled_backends.len() > 1 {
// If the user has chosen an specific backend, we can suggest to use another one
let filtered_backends =
Self::filter_backends_by_features(enabled_backends, required_features, target);
let extra_text: String = if !filtered_backends.is_empty() {
format!(". You can use --{} instead", filtered_backends[0])
} else {
"".to_string()
};
bail!(
"The {} backend does not support the required features for the Wasm module{}",
backends[0],
extra_text
);
} else {
bail!(
"No backends support the required features for the Wasm module. Feel free to open an issue at https://github.com/wasmerio/wasmer/issues"
);
}
}
filtered_backends.first().unwrap().get_engine(target, self)
}
#[cfg(feature = "compiler")]
/// Get the enabled Wasm features.
pub fn get_features(&self, default_features: &Features) -> Result<Features> {
if self.features.all {
return Ok(Features::all());
}
let mut result = default_features.clone();
if !self.features.disable_threads {
result.threads(true);
}View on GitHub (pinned to 8c4b9ee9d3)
Solutions
- Install/use a Wasmer build with all backends (singlepass, cranelift, llvm features enabled)
- Downgrade the module's required features (recompile the wasm with fewer/older features)
- File an issue at https://github.com/wasmerio/wasmer/issues if a shipped backend should support the features
Example fix
// before cargo install wasmer --no-default-features --features singlepass // after cargo install wasmer --features singlepass,cranelift,llvm
Defensive patterns
Strategy: validation
Validate before calling
let required = module.features();
if BackendType::all().filter(|b| b.supports_features(&required)).count() == 0 {
return Err("no installed backend supports this module's features; rebuild wasmer with all compilers");
} Try / catch
match result {
Err(e) if e.to_string().contains("No backends support the required features") => {
eprintln!("rebuild wasmer with singlepass+cranelift+llvm");
Err(e)
}
other => other?,
} Prevention
- Ship full-featured Wasmer builds (all three compilers) for general-purpose use
- Pre-check module feature requirements against your binary's backends
- Keep Wasmer updated to gain backend support for new proposals
When it happens
Trigger: get_engine_for_module encounters a module whose required feature set (from its compile-time features) intersects with no installed backend, on a build where filter_backends_by_features returns [].
Common situations: Minimal/feature-restricted Wasmer builds (e.g. singlepass-only) running modules that need unsupported proposals; very new Wasm proposals before backend support; stripped custom binaries.
Related errors
- The {} backend does not support the required features for th
- The `{compiler}` compiler is not included in this binary.
- The headless engine can't be chosen
- Unsupported backend kind {v:?}
- Unable to determine the wasmer dir: {e}
AI-assisted analysis of wasmerio/wasmer@8c4b9ee9d3 (2026-09-01).
Data as JSON: /api/errors/347d09cc61b5bfbd.
Report an issue: GitHub.