{"record":{"id":"25aa8ae0a1191e4a","repo":"louislam/uptime-kuma","slug":"rabbitmq-nodes-must-be-valid-json-e-message","errorCode":null,"errorMessage":"RabbitMQ Nodes must be valid JSON: ${e.message}","messagePattern":"RabbitMQ Nodes must be valid JSON: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/model/monitor.js","lineNumber":1665,"sourceCode":"                JSON.parse(this.kafkaProducerBrokers);\n            } catch (e) {\n                throw new Error(`Kafka Producer Brokers must be valid JSON: ${e.message}`);\n            }\n        }\n\n        if (this.kafkaProducerSaslOptions) {\n            try {\n                JSON.parse(this.kafkaProducerSaslOptions);\n            } catch (e) {\n                throw new Error(`Kafka Producer SASL Options must be valid JSON: ${e.message}`);\n            }\n        }\n\n        if (this.rabbitmqNodes) {\n            try {\n                JSON.parse(this.rabbitmqNodes);\n            } catch (e) {\n                throw new Error(`RabbitMQ Nodes must be valid JSON: ${e.message}`);\n            }\n        }\n\n        if (this.conditions) {\n            try {\n                JSON.parse(this.conditions);\n            } catch (e) {\n                throw new Error(`Conditions must be valid JSON: ${e.message}`);\n            }\n        }\n\n        if (this.headers) {\n            try {\n                JSON.parse(this.headers);\n            } catch (e) {\n                throw new Error(`Headers must be valid JSON: ${e.message}`);\n            }\n        }","sourceCodeStart":1647,"sourceCodeEnd":1683,"githubUrl":"https://github.com/louislam/uptime-kuma/blob/6b5ea0155793e666666745fb8d6fef1e829543a2/server/model/monitor.js#L1647-L1683","documentation":"validate() runs JSON.parse on rabbitmqNodes for RabbitMQ monitors. It must be valid JSON (typically an array of node URLs).","triggerScenarios":"rabbitmqNodes contains a non-JSON string (comma-separated nodes, plain text).","commonSituations":"Pasting node list as newline- or comma-separated text instead of a JSON array.","solutions":["Provide rabbitmqNodes as valid JSON matching the expected shape","Validate with JSON.parse before saving"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (monitor.rabbitmqNodes) { JSON.parse(monitor.rabbitmqNodes); } // throws if invalid","typeGuard":"function isValidJsonField(v) { if (!v) return true; try { JSON.parse(v); return true; } catch { return false; } }","tryCatchPattern":"try { monitor.validate(); await save(monitor); } catch (e) { /* surface e.message */ }","preventionTips":["Provide node lists as JSON, not comma/newline-separated text","Run JSON.parse over every JSON-typed monitor field before saving"],"tags":["rabbitmq","json","validation","config"],"backgroundTag":null,"analyzedSha":"6b5ea0155793e666666745fb8d6fef1e829543a2","analyzedAt":"2026-08-12T23:42:12.959Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}