我在React中使用Firebase,并且在初始化Firebase时,我使用从{.1v} .env文件中提取的环境变量。我想将我的React应用程序构建并部署到Firebase托管,我将GitHub Actions与以下.yml工作流文件一起使用:
dotenv
但是,由于找不到环境变量,因此构建步骤失败(即name: Deploy
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
- name: Archive Production Artifact
uses: actions/upload-artifact@master
with:
name: public
path: public
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Download Artifact
uses: actions/download-artifact@master
with:
name: public
- name: Deploy
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
)。如果我对值进行硬编码而不使用环境变量,则工作流程成功。
我是否需要像在部署步骤中添加npm run build
一样,将环境变量添加到GitHub机密中,并将它们添加到工作流中,如下所示:
FIREBASE_TOKEN
我收到相同的错误消息,提示它找不到API令牌。
当我在其他基于Firebase的React应用程序中浏览工作流文件时,我看不到有人像我建议的那样添加这些环境变量。在部署到Firebase的应用程序中处理环境变量的正确方法是什么?它们属于构建或部署步骤吗?
答案 0 :(得分:1)
您的自定义环境变量必须以REACT_APP_开头。除NODE_ENV以外的任何其他变量都将被忽略,以避免意外地在机器上公开可能具有相同名称的私钥。 请看一下这篇文章Adding Custom Environment Variables。
作为附加说明,您还可以运行npm run build
以及作为参数传递的env变量,如下所示:
REACT_APP_FIREBASE_APIKEY=${{ secrets.REACT_APP_FIREBASE_APIKEY }} REACT_APP_FIREBASE_AUTHDOMAIN=${{ secrets.REACT_APP_FIREBASE_AUTHDOMAIN }} REACT_APP_FIREBASE_DBURL=${{ secrets.REACT_APP_FIREBASE_DBURL }} npm run build