报错参考 / flowchart, graph

解析错误:遇到了 'CALLBACKNAME'

某个节点 ID 与 Mermaid 的关键字(call、click 或 href)完全同名,且引用时没有带形状,于是解析器把它当成了 click 回调的 token,而不是节点名。

Parse error on line 3:
...   ok -->|yes| call
----------------------^
Expecting 'AMP', 'COLON', 'DOWN', 'DEFAULT', 'NUM', 'COMMA', 'NODE_STRING', 'BRKT', 'MINUS', 'MULT', 'UNICODE_TEXT', got 'CALLBACKNAME'

为什么会这样

Mermaid 的 flowchart 语法把 call、click、href 保留作为 click 交互指令(click nodeId callback "tooltip")的语法 token。当这些词被用作裸节点 ID——最常见的情况是作为一个从未被赋予形状的箭头目标——解析器会把它当成 click 指令的开头,而不是节点引用,从而解析失败。

同一类失败也会发生在 end、subgraph、class、classDef、style、linkStyle 和 interpolate 上,不同的是,即使节点带了形状这些词也会失败(call[Label] 能存活;end[Label] 不能)。

如何修复

把节点重命名为任何非保留字——callNode、callStep、apiCall 都可以——并更新每一处引用,而不只是报错的那一处。如果该 ID 只出现一次且没有形状,给它加一个形状(call[Label])对 call、click、href 这几个词来说就足够了。

MermaidPen 的 Studio 会自动检测这种情况,并可以一键把所有出现的地方统一重命名。

错误示例

解析失败

正在渲染预览...
flowchart TD
    call[Call external API] --> ok{2xx response?}
    ok -->|yes| call
    ok -->|no| retry[Retry]

修复后

正常渲染

正在渲染预览...
flowchart TD
    callNode[Call external API] --> ok{2xx response?}
    ok -->|yes| callNode
    ok -->|no| retry[Retry]

更多报错