【问题标题】:Environment variables in deployed Next.js Serverless App已部署的 Next.js 无服务器应用程序中的环境变量
【发布时间】:2021-05-01 03:46:42
【问题描述】:

所以在我的项目中,我在项目的 root 上有一个 .env 文件,该文件具有所有阶段的默认环境变量。 然后我有 config 文件夹,我在其中保存每个环境的环境和 serverless.yml 文件(.env.staging、.env.production 等。):

像这样:

-root:
 -config:
  -staging:
    .env.staging
    serverless.yml

当我跑步时:

env-cmd -f config/staging/.env.staging next build

然后:

next start

它会加载所有环境变量 .env + .env.staging。哪个很好,而且效果很好,但只能在本地运行。

这是我的 serverless.yml 文件:

my-app-staging:
  component: "@sls-next/serverless-component@1.18.0"
  inputs:
    nextConfigDir: ../../
    bucketName: my-app-staging
    cloudfront:
      comment: my-app-staging

因此,对于分段部署,我运行以下命令:

env-cmd -f config/staging/.env.staging next build && cd config/staging && sls

在已部署的版本上,根 .env 中的所有环境变量都可用,但 .env.staging 中的

我做错了什么?

【问题讨论】:

    标签: next.js amazon-cloudfront serverless-framework


    【解决方案1】:

    所以碰巧在运行sls 命令来部署应用程序时,它是无服务器使用的不同环境。为了在无服务器构建中传递该环境,您应该传递所需的环境。

    在这种情况下,部署脚本应如下所示:

    "build:staging": "env-cmd -f environment/staging/.env.staging next build",
    "deploy:staging": "npm run build:staging && cd config/staging && env-cmd -f .env.staging sls"
    

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 2018-05-21
      • 2018-01-29
      • 2018-12-14
      • 1970-01-01
      • 2016-12-17
      • 2011-04-28
      • 2019-08-13
      相关资源
      最近更新 更多