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

Serverless option as default value for option not working

您好,我正在尝试使用无服务器执行以下操作: 如果我没有给出一个选项,我希望它选择另一个选项

${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'}}

  1. ${opt:environment,'dev'} - 当 opt:environment 未定义时,值设置为 'dev' (也可能你的意思是opt:stage
  2. 构建的变量名:opt:fb,dev - 找不到。

尝试简化和拆分您的选项:

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

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

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

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

例如:

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

阶段和区域各有一个默认值,可以被环境变量覆盖,而环境变量又可以被 CLI 参数覆盖。