Mermaid 象限图坐标 1.0 报 Lexical error,先改边界写法
Mermaid 12.2.0 的 quadrantChart 词法不接受 1.0,但接受整数 1。规范化生成器的边界文本,保持原数值并检查实际渲染版本。
Mermaid 象限图的坐标写成 [1.0, 0.5],解析时报 Lexical error、Unrecognized text;把 1.0 改成 1 却能通过。若使用 Mermaid 12.2.0,先检查坐标的文本形式,不要把合法上边界改成小于 1 的近似值。
象限图点的 x、y 坐标允许在 0 到 1 之间。12.2.0 正式语法的对应词法规则能识别整数 1 和以 0 开头的小数,却不能把 1.0、1.00 作为完整坐标识别。数值范围合法,文本仍可能在词法阶段失败。
保持数值,规范化边界写法
例如,下面的点在受影响版本中会出错:
quadrantChart
x-axis Low Reach --> High Reach
y-axis Low Engagement --> High Engagement
Campaign A: [1.0, 0.5]
手写图可以仅把点改为:
Campaign A: [1, 0.5]
y 坐标的 1.0 也要检查。0.0 与 1.0 不能因为都带小数点就视为同一种解析结果;这里的限制在两个边界并不对称。
若图来自报告生成器,应在输出坐标前先验证它是有限数,且处于允许区间,再把恰好等于 1 的值序列化为 1。不要全局替换文档中的 .0,也不要把 1.01 截断为 1 或把上边界压成 0.999;那会改变数据,掩盖本该报告的越界输入。
JavaScript 使用数值 String(value) 输出时,String(1) 本身就是 1。真正需要检查的常是后续统一小数位的 toFixed(),或上游已经给好的字符串。字符串输入应先按项目的数据格式校验,避免把空字符串、单位或非法值宽松转换成合法坐标。
分开验证数据与渲染环境
先在应用实际安装的 Mermaid 版本上检查这一份最小图,再恢复完整标题、样式和其他点。编辑器预览、站点插件和构建服务可能内置不同版本,不能仅在一个在线预览器中通过就结束排查。
截至 2026 年 10 月 23 日,已核对的正式 npm 版本仍为 12.2.0;不能把开发分支中的词法调整当成已经随正式包发布。将来升级时,保留 x、y 分别为 1.0 的回归图,同时检查正常小数和越界输入。修复应让合法边界能解析,不能放宽成任意数值都通过。


