alibaba/nacos · error · NacosApiException
PARAMETER_MISSING
PARAMETER_MISSING
Error message
Request parameter `skillName` should not be blank.
What it means
SkillOnlineForm.validate() requires a non-blank `skillName` to toggle a skill (or a version of it, depending on `scope`) online/offline. Online state is per-skill (or per-skill-version), so the target skill must be named. Uses StringUtils.isBlank; namespaceId defaults to "public" via fillDefaultNamespaceId.
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillOnlineForm.java:50
@Serial
private static final long serialVersionUID = 1L;
/**
* "skill" means enable/disable the whole skill. Otherwise version-level.
*/
private String scope;
/**
* Version for version-level online/offline.
*/
private String version;
@Override
public void validate() throws NacosApiException {
fillDefaultNamespaceId();
if (StringUtils.isBlank(getSkillName())) {
throw new NacosApiException(NacosException.INVALID_PARAM, ErrorCode.PARAMETER_MISSING,
"Request parameter `skillName` should not be blank.");
}
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;View on GitHub (pinned to 9b989acdf1)
Solutions
- Include `skillName` of the skill to toggle.
- Confirm the skill exists via list/detail.
- If toggling a specific version, also send `version`; if scoping, send `scope`.
Example fix
// before
{"scope":"version","version":"1.0.0"}
// after
{"skillName":"my-skill","scope":"version","version":"1.0.0"} Defensive patterns
Strategy: validation
Validate before calling
// Before calling skill online/offline
if (skillName == null || skillName.isBlank()) {
throw new IllegalArgumentException("skillName is required to toggle online state");
} Type guard
// TypeScript const hasSkillName = (s?: string | null): boolean => s != null && s.trim().length > 0;
Try / catch
try {
form.validate();
} catch (NacosApiException e) {
// skillName missing
} Prevention
- Bind the skill from the selected row; don't expect server inference.
- If toggling a version, also send version and scope.
- Disable the toggle UI until a skill is selected.
When it happens
Trigger: Calling the skill online/offline API with skillName missing, empty, or whitespace-only. The form also has optional `scope` and `version` fields for finer-grained toggling, but skillName is always required.
Common situations: Assuming the server toggles 'all skills' or the latest; frontend sending only scope/version; path variable not bound to skillName.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/2bbe6a7c886ccd46.
Report an issue: GitHub.