【问题标题】:How to use environment variables in Github Page?如何在 Github Page 中使用环境变量?
【发布时间】:2023-03-06 20:39:02
【问题描述】:

我想将我的 create-react-app 项目部署到 GitHub Pages。但我有一些秘钥。如何在我的 React 应用程序中管理这些密钥?

【问题讨论】:

    标签: reactjs github github-pages create-react-app


    【解决方案1】:

    2020 年 6 月编辑

    参考@alicia-jasmine

    “React 纯粹是一个前端框架。React 可访问的所有内容(即使您通过构建步骤嵌入它)稍后将在前端代码中可见,并且可以找到相对基本的人。真正保密你必须有一些服务器端的东西!”

    以下答案实际上会在 GitHub 上的 gh-page 分支中公开密钥,并且可以通过开发者控制台中的网络选项卡访问这些密钥。

    原始答案

    我也在使用create-react-app,我发现这可以通过使用 GitHub 机密设置自定义您的 CI 脚本来完成。 (设置完成后,您可以在项目中使用这样的环境变量。)

    const apiKey = process.env.REACT_APP_APIKey
    const apiSecret = process.env.REACT_APP_APISecret
    

    要向您的存储库添加密钥,请转到您的存储库的Setting > Secrets,单击Add a new secret。在下面的屏幕截图中,我添加了 2 个环境变量:REACT_APP_APIKeyREACT_APP_APISecret

    注意:您要使用 create-react-app 访问的所有环境变量都需要以 REACT_APP 为前缀。

    准备好你的秘密后,你可以看看this post,它是关于如何在推送时添加你自己的Action。

    要设置您的操作脚本,请转到您的存储库 > 操作,单击 自行设置工作流程,然后粘贴帖子中提供的脚本或获取看看下面我的脚本。

    我使用以下脚本来访问我在 GitHub 密码上设置的 2 个环境变量。 (您可以通过${{ secrets.REACT_APP_APIKey }}访问您在脚本中设置的秘密。)

    name: CI
    
    on:
      push:
        branches:
          - master
    
    jobs:
      build:
    
        runs-on: ubuntu-latest
    
        steps:
        
        - name: Checkout
          uses: actions/checkout@v1
    
        - name: Build
          run: |
            npm install
            npm run-script build
          env:
            REACT_APP_APIKey: ${{ secrets.REACT_APP_APIKey }}
            REACT_APP_APISecret: ${{ secrets.REACT_APP_APISecret }}
    
        - name: Deploy
          uses: JamesIves/github-pages-deploy-action@releases/v3
          with:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            BRANCH: gh-pages
            FOLDER: build
    
    

    设置脚本后,任何推送到master 都会触发该操作 分支。推送任何提交后,您可以在操作状态中查看部署状态。

    你可以看到我很难弄清楚......这么多失败的尝试哈哈。无论如何,希望这会有所帮助:)

    【讨论】:

    • 你好,我完成了所有步骤,但无法访问 process.env.anyvariable。
    • 刚刚编辑:你应该把环境变量放在env:下的Build步骤下。
    • 我已经制作了一个 dev 文件和 prod 文件(用于密钥),但是在这个 CI 测试期间,构建失败,因为它找不到 dev 文件,解决方法是什么?
    • 您好,我今天早上尝试通过删除秘密并重新设置它们,现在它可以工作了!通过手动分配,我的意思是在我的操作中我有这样的东西:``` env: REACT_APP_APIKey: 2 #这是正确显示值 REACT_APP_APISecret: ${{ secrets.REACT_APP_APISecret }} #这不是``` 现在可以正常工作了与秘密,所以谢谢你的回复!
    • @AntonCheng 谢谢。在所有失败之后,我终于能够使用来自 secrets 的 env 变量部署我的 gh-page 分支。然而,github 出人意料地再次撤销了我的“PERSONA_ACCESS_TOKEN”。当我查看错误提交时,它表明我的令牌再次以纯文本形式显示。我很困惑为什么会这样。我的天真猜测:我们在构建步骤中获得了环境,然后部署它,这是否意味着我们仍然将普通秘密放在构建文件夹中然后将其推出?
    【解决方案2】:
    name: Deploy to GitHub Pages
        on:
          push:
            branches:
              - master
        jobs:
          build-and-deploy:
            runs-on: ubuntu-latest
            steps:
            - name: Checkout
              uses: actions/checkout@v1
    
            - name: Build
              run: |
                npm install
                npm run-script build
              env:
                REACT_APP_INSTAGRAM_ACCESS_TOKEN: ${{ secrets.REACT_APP_INSTAGRAM_ACCESS_TOKEN }}
                REACT_APP_SMTP_SECURE_TOKEN: ${{ secrets.REACT_APP_SMTP_SECURE_TOKEN }}
    
            - name: Deploy
              uses: JamesIves/github-pages-deploy-action@releases/v3
              with:
                GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN_KEY }}
                BRANCH: gh-pages
                FOLDER: dist
    

    您可以像这样使用 GitHub 机密添加环境变量。这解决了我的问题。

    【讨论】:

    • 这是正确的脚本:使用run-script build将变量放在构建步骤下
    【解决方案3】:

    如果它们是真正秘密的,因此不应该在存储库中,那么就没有办法使用 github-pages 来管理它。

    如果您可以将它们放在存储库中,则将它们放入 .env 并通过 process.env 访问

    【讨论】:

      【解决方案4】:

      我支持this answer (above)

      但我建议将 gh-pages YML 更新为 version 4

      还可以看看environment variables solution,因为我花了好几个小时才找到解决方案

            - name: Deploy
              uses: JamesIves/github-pages-deploy-action@4.0.0
              with:
                branch: gh-pages
                folder: front-app/dist
      

      【讨论】:

      • 但是我的答案并没有帮助,我仍然在寻找一种将环境变量传递给 react-app 的方法。我已经尝试过 dotenv lib,但它也没有工作
      【解决方案5】:

      要使用环境变量,一般的做法是:

      • 不要将它们暴露给公众
      • 在开发/生产时将其保留在本地,并在 .gitignore 文件中忽略。
      • 制作 静态构建您的应用程序然后将其部署到任一 github 网页或任何其他静态网站主机。

      在使用create-react-app 时,您可以享受到他们的好处,您可以在您的root 文件夹中创建.env.env 文件的结构应遵循以下键值结构:-

      REACT_APP_SECRET_CODE1=dev123
      REACT_APP_SECRET_CODE2=prod456
      

      文件中的键应以REACT_APP 为前缀,您可以使用这些键访问应用程序中的变量。例如。 process.env.REACT_APP_SECRET_CODE,这将具有值dev123

      【讨论】:

      • 我不知道为什么这会遭到反对,因为它所说的一切都是正确的,就本地开发而言,这取决于您如何部署。例如,如果您正在部署构建目录(这些值将被烘焙,这可能是不可取的)或者如果您正在使用 github 操作或其他东西,您需要在远程构建时单独设置环境变量。
      【解决方案6】:

      您可以在 Heroku 上部署您的项目,您可以在其中设置您的密钥。

      【讨论】:

      • 建议与原始帖子要求不同的平台根本没有帮助。
      • 您可以删除您的答案并恢复您的积极状态
      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2022-01-04
      • 2022-11-11
      • 2021-01-07
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多