【问题标题】:Passing environment variables to NOW将环境变量传递给 NOW
【发布时间】:2019-12-11 11:55:55
【问题描述】:

我正在尝试传递 firebase 环境变量以使用 now 进行部署。

我已使用 base64 手动对这些变量进行编码,并使用以下命令将它们添加到现在:
now secrets add firebase_api_key_dev "mybase64string"
编码的字符串被放置在语音标记内""

这些都在我的 CLI 工具中,我可以使用 list 命令查看它们:
now secrets ls

> 7 secrets found under project-name [499ms]
  name                              created
  firebase_api_key_dev              6d ago
  firebase_auth_domain_dev          6d ago
  ...

在我的 firebase 配置中,我使用以下代码:

const config = {
  apiKey: Buffer.from(process.env.FIREBASE_API_KEY, "base64").toString(),
  authDomain: Buffer.from(process.env.FIREBASE_AUTH_DOMAIN,"base64").toString(),
  ...
}

在我的now.json 文件中,我有以下代码:

{
  "env": {
    "FIREBASE_API_KEY": "@firebase_api_key_dev",
    "FIREBASE_AUTH_DOMAIN": "@firebase_auth_domain_dev",
    ...
  }
}

在我的本地环境中一切正常(当我运行 next 时),因为我还有一个包含这些变量的 .env 文件,但是当我部署我的代码时,我在我的 now 控制台中收到以下错误:

TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是 string、Buffer、ArrayBuffer、Array 或 Array-like Object 类型之一。接收类型未定义

这是否表明我的环境变量没有被读取?这里有什么问题?好像根本不存在

【问题讨论】:

    标签: deployment continuous-integration next.js vercel


    【解决方案1】:

    解决方案是将我现有的now.json 替换为:

    {
      "build":{
        "env": {
          "FIREBASE_API_KEY": "@firebase_api_key",
          "FIREBASE_AUTH_DOMAIN": "@firebase_auth_domain",
          "FIREBASE_DATABASE_URL": "@firebase_database_url",
          "FIREBASE_PROJECT_ID": "@firebase_project_id",
          "FIREBASE_STORAGE_BUCKET": "@firebase_storage_bucket",
          "FIREBASE_MESSAGING_SENDER_ID": "@firebase_messaging_sender_id",
          "FIREBASE_APP_ID": "@firebase_app_id",
          "FIREBASE_API_KEY_DEV": "@firebase_api_key_dev",
          "FIREBASE_AUTH_DOMAIN_DEV": "@firebase_auth_domain_dev",
          "FIREBASE_DATABASE_URL_DEV": "@firebase_database_url_dev",
          "FIREBASE_PROJECT_ID_DEV": "@firebase_project_id_dev",
          "FIREBASE_STORAGE_BUCKET_DEV": "@firebase_storage_bucket_dev",
          "FIREBASE_MESSAGING_SENDER_ID_DEV": "@firebase_messaging_sender_id_dev",
          "FIREBASE_APP_ID_DEV": "@firebase_app_id_dev"
        }
      }  
    }
    

    我错过了 build 标头。

    我必须联系 ZEIT 支持来帮助我确定这个问题。

    【讨论】:

    • 我犯的愚蠢错误
    猜你喜欢
    • 2013-12-29
    • 2021-09-05
    • 2020-03-27
    • 2017-03-30
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2020-11-07
    相关资源
    最近更新 更多