n8n-io/n8n · error · Error
${name} must be a positive number, got "${raw}".
Error message
${name} must be a positive number, got "${raw}". What it means
parsePositiveNumber is the fractional-tolerant sibling of parsePositiveInt, used for flags that may be decimals (e.g. temperature-like values). It rejects undefined/empty (returns undefined) but throws on NaN, non-finite, zero, or negative values.
Source
Thrown at packages/@n8n/instance-ai/evaluations/cli/pairwise.ts:124
baseUrl: get('--base-url') ?? process.env.N8N_EVAL_BASE_URL ?? 'http://localhost:5678',
keepWorkflows: has('--keep-workflows'),
};
}
function parsePositiveInt(raw: string | undefined, name: string): number | undefined {
if (raw === undefined || raw === '') return undefined;
const n = Number(raw);
if (!Number.isFinite(n) || n <= 0 || !Number.isInteger(n)) {
throw new Error(`${name} must be a positive integer, got "${raw}".`);
}
return n;
}
function parsePositiveNumber(raw: string | undefined, name: string): number | undefined {
if (raw === undefined || raw === '') return undefined;
const n = Number(raw);
if (!Number.isFinite(n) || n <= 0) {
throw new Error(`${name} must be a positive number, got "${raw}".`);
}
return n;
}
// ---------------------------------------------------------------------------
// Dataset loading
// ---------------------------------------------------------------------------
interface DatasetExample {
id: string;
prompt: string;
dos?: string;
donts?: string;
}
async function loadExamples(args: PairwiseArgs, logger: EvalLogger): Promise<DatasetExample[]> {
if (args.examplesJsonl) {
return loadExamplesFromJsonl(args.examplesJsonl, logger);View on GitHub (pinned to 5ac6606e81)
Solutions
- Re-run with a positive number (decimals allowed) for the named flag.
- If zero is genuinely valid for your use case, file a change to the validator; do not bypass it.
- Validate the value in your wrapper script before invoking the CLI.
Example fix
// before: pnpm pairwise --temperature 0 // after: pnpm pairwise --temperature 0.2
Defensive patterns
Strategy: validation
Validate before calling
function asPositiveNumber(raw: string | undefined, name: string): number | undefined {
if (raw === undefined || raw === '') return undefined;
const n = Number(raw);
if (!Number.isFinite(n) || n <= 0) throw new Error(`${name} must be a positive number`);
return n;
} Type guard
const isPositiveNumber = (v: unknown): v is number => typeof v === 'number' && Number.isFinite(v) && v > 0;
Prevention
- Validate numeric args before invoking.
- Distinguish integer vs float flags in docs.
- Reject zero explicitly if zero is invalid.
When it happens
Trigger: Passing `--threshold 0`, `--rate -0.5`, or a non-numeric string to a flag validated by parsePositiveNumber.
Common situations: Misremembering a flag as accepting zero; passing a percentage as 0..1 vs 0..100 and hitting zero; shell quoting turning a number into garbage.
Related errors
- ${name} must be a positive integer, got "${raw}".
- LangSmith mode requires `--dataset` and does not support `--
- --max-attempts must be >= 1
- --source langtracer requires --suite <slug>
- Missing value for ${flag}
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/ad9c057a4a93110c.
Report an issue: GitHub.