无服务器选项作为选项不起作用的默认值

问题描述

嗨,我正在尝试通过无服务器执行以下操作: 如果我不提供选择,我希望它选择另一个选择

${opt:fb,${opt:environment,'dev'}}

但是出了点问题,因为此错误总是在我呼叫sls deploy时出现:

A valid option to satisfy the declaration 'opt:fb,dev' Could not be found.

我不明白问题出在哪里,显然是正确地选择了该值。 能帮我吗?谢谢

解决方法

要使这种插值类型正常工作,请用双引号将内部变量包裹起来:

${opt:fb,"${opt:environment,'dev'}"}

此模式对于设置default -> envvar -> CLI option继承体系特别有用。

例如:

stage: ${opt:stage,"${env:stage,'dev'}"}
region: ${opt:region,"${env:region,'us-east-1'}"}

每个阶段和区域都有一个默认值,可以使用环境变量覆盖该默认值,然后可以使用CLI参数覆盖该变量。

,

根据您的表情,您试图做一个双重条件。看起来不起作用。

$ {opt:fb,$ {opt:environment,'dev'}}}

  1. $ {opt:environment,'dev'}-未定义 opt:environment 时,值设置为'dev'(也许您是说 opt:stage
  2. 构建变量的名称:opt:fb,dev-找不到。

尝试简化和拆分选项:

custom:
    cliEnv: ${opt:environment,'dev'}
    conditionEnv: ${opt:fb,${self:custom.cliEnv}}