You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure YAML流水线集成Storybook/Chromatic报bad substitution错误求助

错误原因

bad substitution是Bash执行变量替换时无法识别目标变量的典型报错,对应当前场景有以下几个常见触发原因:

  • Azure DevOps的保密变量默认不会自动注入到脚本的运行环境中,如果你没有在步骤的env字段中显式声明project_token变量和Azure流水线变量的映射关系,Bash就会找不到该变量触发报错
  • 你使用了sh而非Bash执行脚本,sh不支持部分Bash专属的变量替换语法
  • 变量名拼写错误、大小写不匹配,或者${}中存在多余空格(比如${ project_token })
  • 直接在命令中写死${project_token}字符串,没有绑定实际的变量值
解决方案

按以下步骤逐一排查即可解决:

  1. 显式在Chromatic执行步骤的env字段中声明变量映射,示例YAML配置如下:
- bash: npx chromatic --project-token=${project_token}
  env:
    # 右侧的$(CHROMATIC_PROJECT_TOKEN)替换为你在Azure流水线中定义的保密变量名
    project_token: $(CHROMATIC_PROJECT_TOKEN)
  displayName: '发布到Chromatic'
  1. 确认脚本执行器使用bash而非script(默认可能走sh),避免语法兼容问题
  2. 检查变量名拼写完全一致,${}内不要加多余空格,严格写为${project_token}
  3. 如果你选择直接在命令中填写明文token,不要用${}包裹,直接写入token字符串即可,但该方式存在泄露风险,不推荐使用
  4. 如需调试可添加临时步骤验证变量是否正常注入:
- bash: echo "变量注入状态:${project_token:+成功}"
  env:
    project_token: $(CHROMATIC_PROJECT_TOKEN)

如果输出变量注入状态:成功说明变量绑定正常,否则需要检查Azure流水线变量的配置是否正确。

内容的提问来源于stack exchange,提问作者Sole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:27:02