alibaba/nacos · error · Error
providerName is required when providerUrl is set
Error message
providerName is required when providerUrl is set
What it means
Thrown by serializeProvider when a providerUrl is set but providerName is empty. The provider object requires at least a name; a URL alone is meaningless (the backend would not know whom the URL belongs to). If both are empty, the field is omitted entirely (returns undefined) — only the half-filled case errors.
Source
Thrown at console-ui-next/src/pages/newAgent/agent-console-model.ts:410
}
const parsed = parseJson(
required(values.callInterfaces, 'callInterfaces'),
'callInterfaces',
);
if (!Array.isArray(parsed) || parsed.length === 0) {
throw new Error('callInterfaces must be a non-empty JSON array');
}
return JSON.stringify(parsed);
}
function serializeProvider(values: AgentEditorValues): string | undefined {
const name = values.providerName.trim();
const url = values.providerUrl.trim();
if (!name && !url) {
return undefined;
}
if (!name) {
throw new Error('providerName is required when providerUrl is set');
}
return JSON.stringify(url ? { name, url } : { name });
}
function serializeTags(value: string): string | undefined {
const tags = value.split(',').map((item) => item.trim()).filter(Boolean);
return tags.length > 0 ? JSON.stringify(tags) : undefined;
}
export function buildDraftCreateData(
namespaceId: string,
values: AgentEditorValues,
initial: boolean,
contentMode: DraftContentMode,
protocolEditors?: StructuredProtocolEditorValues[],
): AgentDraftCreateData {
const result: AgentDraftCreateData = {
namespaceId,View on GitHub (pinned to 9b989acdf1)
Solutions
- Provide a providerName whenever you set a providerUrl.
- If no provider is needed, clear both fields.
- Add a client-side rule linking the two fields (disable URL until name is set).
Example fix
// before providerName = '' providerUrl = 'https://vendor.example.com' // after providerName = 'Vendor Inc' providerUrl = 'https://vendor.example.com'
Defensive patterns
Strategy: validation
Validate before calling
function checkProvider(name, url) {
if (url && !name) throw new Error('providerName required when providerUrl is set');
} Type guard
function isProviderComplete(name: string, url: string): boolean {
return (name && url) || (!name && !url) || (name && !url);
} Try / catch
try { serializeProvider(values); } catch (e) {
if (/providerName is required/.test(e.message)) { toast.error('Enter a provider name'); }
} Prevention
- Link the two fields in the UI
- Disable URL field until name is set
- Clear both fields if no provider needed
When it happens
Trigger: User fills the provider URL field but leaves the provider name blank, or vice-versa intentionally but only name is given (name-only is allowed and produces {name}).
Common situations: Form has two adjacent fields; user fills one. Copy-paste lands only in the URL field. Name field disabled or hidden by a conditional.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/5cdc09cd8af45c6f.
Report an issue: GitHub.