将环境变量传递给NOW

时间:2019-12-11 11:55:55

标签: deployment continuous-integration next.js zeit-now

我正在尝试将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文件,但是当我部署代码时,在{ {1}}控制台:

now

这是否表明未读取我的环境变量?这里有什么问题?看来它们根本不存在

1 个答案:

答案 0 :(得分: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支持人员来帮助我确定此问题。