变量库允许你提供一个不同环境不同的值,而不是硬编码一个只在某个工作区里正确的值。 只要 Fabric 接受变量引用,就会先解析该引用给某个值,然后再使用该值。
当 Fabric 无法解析引用时,它不会替换一个值。 它不会直接给出结果,而是报告一个解析状态,指出引用的哪一部分解析失败了。 本文将解释每种状态及其应对方法。
引用是如何被解析的
解析引用是分阶段进行的,任何一个阶段失败都会导致后续阶段停止。 Fabric 执行以下操作:
- 阅读推荐信并确认其结构合理。
- 找到变量库中的引用名称,并确认你能读取它。
- 查找库的当前活动值集。
- 在该值集合中找到变量。
- 检查变量的值类型是否与引用请求的类型相符。
- 如果该值指向另一个项或某个连接,也会一并解析其详细信息。
你看到的状态告诉你哪些阶段失败了,通常这足以在不检查整个链条的情况下找到修复方法。
参考分辨率误差
这些错误意味着引用本身、变量库或变量无法解析。
| 消息 | 含义 | 如何修复此问题 |
|---|---|---|
| 参考格式无效 | 参考文献格式不正确。 | 纠正参考语法。 |
| 变量库引用缺失 | 引用中没有给变量库命名。 | 提供包含图书馆的完整参考文献。 |
| 变量库引用存在歧义 | 多个变量库与引用匹配。 | 把参考文献具体点,这样才能对应一个库。 |
| 不允许使用类型说明 | 该引用指定了内联类型,但此引用不支持内联类型。 | 移除内联类型规范。 |
| 未找到变量库 | 图书馆不存在,或者你没有权限阅读。 | 查查参考资料,也查查你对图书馆的访问权限。 |
| 变量库损坏 | 无法读取该库。 | 这不是自助式的。 如果继续,请联系支持人员。 |
| 未找到活跃值集 | 库中配置的活跃值集不存在。 | 设置库中存在的激活值集。 |
| 变量定义无效 | 库中一个或多个变量定义无效。 | 修正库中的变量定义。 |
| 变量覆写无效 | 一个或多个覆盖值无效。 | 更正覆盖值。 |
| 找不到变量 | 库解析了,但没有该名称的变量。 | 验证变量名称。 变量重命名是常见原因。 |
| 变量类型不匹配 | 变量的值类型不是引用要求的类型。 | 更改请求的类型或变量值。 |
如果你看到的是笼统的 无法解析引用 消息,而不是上述这些消息中的某一条,则说明该失败无法归因于某个特定阶段。 重试,如果问题依旧,就将其视为服务端错误,而非引用本身的问题。
引用的项目错误
这些错误意味着引用已解析为某个值,但值指向的项或连接无法解析。 参考文本是正确的,所以应修改目标文本,而不是参考文本。
| 消息 | 含义 | 如何修复此问题 |
|---|---|---|
| 未找到参考物品 | 那个价值所指的物品并不存在。 | 确认该项仍然存在,并且该值指向正确的项。 |
| 无法访问引用项 | 这个项目存在,但你没有阅读权限。 | 请求该项目的读取权限。 |
| 未找到引用连接或拒绝访问 | 该连接不存在,或者您无权读取它。 | 检查连接和你对它的访问权限。 |
| 出了点问题 | 提到的那个问题无法解决,原因也没有具体说明。 | 再重试。 如果问题持续存在,就当作服务端错误处理。 |
Considerations
在你遇到这些情况之前,其中有几点值得先了解:
- 在某些情况下,权限错误和对象缺失会以相同的方式报告。 “找不到变量库”和“找不到被引用的连接或访问被拒绝”这两种提示都可能表示两种情况:对象不存在,或者你无权查看它,因为 Fabric 不会确认你无权读取的对象是否存在。 在断定物体消失之前,先检查一下你的访问权限。
- 对你来说可以解析的引用,对其他人来说未必也能解析。 解析取决于触发者所具有的权限,因此,在编写时可用的引用,之后在由不同身份运行同一项工作时可能会失效。
- 重命名变量会破坏对该变量的引用。 引用是按名称显示的,因此重命名时会以“ 未找到变量 ”的形式出现,而不是在重命名时作为警告。