windmill-labs/windmill · error
{} is currently not supported
Error message
{} is currently not supported What it means
ScriptLang::from_str rejects any language string that is not one of the known script languages (python, bash, go, javascript, etc.). Windmill added languages over time, so unknown strings fail with this message.
Source
Thrown at backend/windmill-types/src/scripts.rs:177
"powershell" => ScriptLang::Powershell,
"postgresql" => ScriptLang::Postgresql,
"mysql" => ScriptLang::Mysql,
"bigquery" => ScriptLang::Bigquery,
"snowflake" => ScriptLang::Snowflake,
"mssql" => ScriptLang::Mssql,
"graphql" => ScriptLang::Graphql,
"oracledb" => ScriptLang::OracleDB,
"php" => ScriptLang::Php,
"rust" => ScriptLang::Rust,
"ansible" => ScriptLang::Ansible,
"csharp" => ScriptLang::CSharp,
"nu" => ScriptLang::Nu,
"java" => ScriptLang::Java,
"ruby" => ScriptLang::Ruby,
"rlang" => ScriptLang::Rlang,
"dbt" => ScriptLang::Dbt,
// for related places search: ADD_NEW_LANG
language => return Err(anyhow::anyhow!("{} is currently not supported", language)),
};
Ok(language)
}
}
#[derive(Eq, PartialEq, Debug, Hash, Clone, Copy, sqlx::Type)]
#[sqlx(transparent)]
pub struct ScriptHash(pub i64);
impl Deref for ScriptHash {
type Target = i64;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl Into<u64> for ScriptHash {View on GitHub (pinned to e474e8803c)
Solutions
- Use a supported language string exactly as listed (lowercase: python, bash, go, javascript, typescript, php, nu, java, ruby, rlang, dbt, ...)
- If the script is from a newer windmill, upgrade the instance
- Check for casing/whitespace issues in the language field
Example fix
// before
{"language": "Python"}
// after
{"language": "python"} Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED_LANGS = {"python","bash","go","javascript","typescript","php","nu","java","ruby","rlang","dbt","deno","ansible"}
if script["language"] not in SUPPORTED_LANGS:
raise ValueError(f"unsupported language: {script['language']}") Type guard
function isScriptLang(s: string): s is ScriptLang {
return ["python","bash","go","javascript","typescript","php","nu","java","ruby","rlang","dbt"].includes(s);
} Try / catch
match script_lang_str.parse::<ScriptLang>() {
Err(e) if e.to_string().ends_with("is currently not supported") => {
eprintln!("use a supported language string (lowercase): {e}");
}
other => other?,
} Prevention
- Always lowercase the language field
- Check the server's supported-language list before deploying
- Upgrade windmill if a script uses a newer language
When it happens
Trigger: Creating/updating a script (or importing one) whose `language` field is an unsupported or misspelled value, e.g. `perl`, `Python` (wrong case), or a newer language read by an older server.
Common situations: Hand-edited script metadata; deploying scripts exported from a newer windmill into an older instance; typos or wrong casing in the language field.
Related errors
- local script ${path} has no content/language
- Field properties should be an object
- got value: {other} for field `type`, expected value: `static
- cron: a panic occurred during find_next_occurrence
- result.substring(__RESULT_ERR_PREFIX.length)
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/c849d919aa82541f.
Report an issue: GitHub.