【问题标题】:How can I get rid of the "Warning: Invalid configuration encountered" in serverless.yml?如何摆脱 serverless.yml 中的“警告:遇到无效配置”?
【发布时间】:2023-02-01 18:08:21
【问题描述】:

目前我正在尝试将我的无服务器服务分解为多个服务以克服 cloudFormation 资源限制。

我目前的项目结构如下:

aws-backend
  functions
    workers
      serverless.yml // workers service
.env.local
.env.dev
serverless.yml // Rest of the functions in here

在我的工作人员服务中,我尝试使用变量引用根文件夹中的 .env.* 文件。

我的问题是当我使用以下语法时

${env:SLS_AWS_REGION}

我得到一个

Error:Cannot resolve serverless.yml: Variables resolution errored with:
 - Cannot resolve variable at "provider.region": Value not found at "env" source

但是当我使用以下语法时: ${../../env:SLS_AWS_REGION}

它有效,但我收到警告:

Warning: Invalid configuration encountered
  at 'package.individually': must be boolean
  at 'provider.region': must be equal to one of the allowed values [use-east-1, etc...]

我怎样才能摆脱这个错误?我什至使用了正确的语法吗?

谢谢

【问题讨论】:

    标签: node.js serverless-framework aws-serverless


    【解决方案1】:

    至于这个错误

    Error:Cannot resolve serverless.yml: Variables resolution errored with:
     - Cannot resolve variable at "provider.region": Value not found at "env" source
    

    您收到此错误是因为框架找不到 SLS_AWS_REGION 环境变量。 env变量源不是从.env文件中读取的,而是从进程的环境变量中读取的。

    至于这个语法:

    ${../../env:SLS_AWS_REGION}
    

    这不起作用,因为 env 是正确的变量源,而不是 ../../env

    您在这里有两个选择:

    1. 确保导出.env 文件的内容,以便在运行serverless 命令之前将这些文件中定义的变量实际导出为环境变量。
    2. 在您的serverless.yml 文件中设置useDotenv: true,这样.env 文件将与dotenv 一起自动加载。请参阅文档以了解其工作原理:https://www.serverless.com/framework/docs/environment-variables

    【讨论】:

    • 我的 serverless.yml 文件中已经有 useDotenv: true 并且我正在使用 - serverless-dotenv-plugin
    • 你能分享你正在运行的命令吗?您安装了哪个版本的 Serverless Framework?
    【解决方案2】:

    根据the plugin documentation,你应该运行sls deploy--stage--env(在无服务器> = 3.0.0中弃用)或NODE_ENV对应于.env文件名。如果你在没有任何这些标志的情况下运行它,它将默认为 development,插件将查找名为 .env、.env.development、.env.development.local 的文件

    请注意,Serverless Framework .env files resolution 与插件的工作方式不同。

    该框架在服务目录中查找 .env 和 .env.{stage} 文件,然后尝试使用 dotenv 加载它们。如果找到 .env.{stage},则不会加载 .env。如果未明确定义阶段,则默认为 dev。

    我相信插件在这里优先。

    【讨论】:

      猜你喜欢
      • 2022-07-16
      • 1970-01-01
      • 2016-11-20
      • 2018-04-30
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多