无法访问环境机密变量,将其从GH页传递到ReactApp [英] cannot access environment secrets variables passing it from GH-pages to ReactApp

查看:53
本文介绍了无法访问环境机密变量,将其从GH页传递到ReactApp的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Github页面上的ReactApp部署中使用环境变量.

I'm trying to use environment variables in ReactApp deploying at Github-pages.

该变量是通过 process.env 添加的,并以文档规定的 REACT_APP 开头

The variable is added through process.env and starts with REACT_APP as docs prescribe

export default class WeatherService {
  constructor() {
    this.API_WEATHER_URL = process.env.REACT_APP_DEV_SERVER_URL + 'api/weather';
  }

使用 GitHub Actions yml

.env

but the app gets wrong values from GitHub Secrets.

但是应用程序从GitHub Secrets获取了错误的值.

查看GH页面上的react-app接收到错误的对象,而不是我传递的对象("username.cloudTech.com/api"):

this.API_BLOB_URL = Object({ NODE_ENV: "production", PUBLIC_URL: "/azure-flask-react", WDS_SOCKET_HOST: void 0, WDS_SOCKET_PATH: void 0, WDS_SOCKET_PORT: void 0, FAST_REFRESH: !0 }).REACT_APP_DEV_SERVER_URL + "api/blob/"

At the same time when I build locally with npm run build. React successfully replaces the env. variables

与此同时,当我使用 npm run build 在本地进行构建时.React成功替换了env.变量

习惯用于将不同的环境设置用作api dev服务器中的

  • development (127.0.0.1:5000) and
  • production (username.cloudTech.com/api).
  • 开发(127.0.0.1:5000)
  • 生产(username.cloudTech.com/api).

我已经尝试使用 env-cmd dotenv lib,但这两个都不起作用


更新:

UPDATE:

如果我通过 REACT_APP_ENV ='username.cloudTech.com/api' npm脚本-它会成功传递此变量:

If I pass REACT_APP_ENV='username.cloudTech.com/api' npm script - it passes this variable successfully:

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "build:staging": "REACT_APP_FRONT_APP_URL=nikonov91-dev.github.io/azure-flask-react/ npm run build"
    ...
}

然后瞧瞧.

@OldPro的答案的更新.我引用了我的话:

UPDATE on @OldPro`s answer. I've quoted my line:

run: |
  cd front-app
  touch .env
  echo 'REACT_APP_DEV_SERVER_URL=${{ secrets.DEV_SERVER_URL }}' >> .env

,但是在JS ch中,该值仍然为空:

but the value is still empty in JS ch:

我也尝试了@peterevans的答案

I've tried also the answer of @peterevans

        run: |
          cd front-app
          echo "DEV_SERVER_URL=${{ secrets.DEV_SERVER_URL }}" >> $GITHUB_ENV
          touch .env
          echo "REACT_APP_DEV_SERVER_URL=${{ env.DEV_SERVER_URL }}" >> .env

不幸的是,变量是相同的

unfortunately the variable is the same

更新

我确定我的方法有效,因为如果我在 YML 中对变量进行硬编码,则该变量可以正常工作,并且可以在我的Appv中轻松访问

I'm sure my approach is working because if I hardcode the variable in YML it works as should and can be easily accessed in my Appv

 - name: Store variables
        run: |
          cd front-app
          touch .env
          echo "REACT_APP_DEV_SERVER_URL='https://first-py-app.azurewebsites.net/'" >> .env

this.API_BLOB_URL = process.env.REACT_APP_DEV_SERVER_URL +'api/blob/'; 变成 this.API_BLOB_URL =" https://first-py-app.azurewebsites.net/api/blob/"

但我仍在寻找解决方案,该方法如何从 GH-Secrets

BUT I STILL LOOKING FOR solution how to pass variable from GH-Secrets

推荐答案

我发现有两种方法:

  • 存储库秘密 可以设置设置-> 秘密-> 新存储库密码

  • Repository Secrets may be set Settings->Secrets->New repository secret

环境秘密 可能会创建设置-> 环境-> 新环境-> 添加秘密

Environment Secrets may be created Settings->Environments->New environment->Add secret

并在工作描述中添加下一个参数:环境:您想要的环境与我的代码一样

and add to job description next argument: environment: your-wanted-env as it is in my code

环境秘密工作描述中需要其他参数:

Environment Secrets needs additional argument in job description:

jobs:
  trying-to-use-environment-secrets:
    runs-on: ubuntu-latest
    environment: test-env #<---The only difference we need to specify what environment to use for environment secrets
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Store variables
        run: |
          echo ${{ secrets.DEV_SERVER_URL_FROM_ENVIRONMENT_SECRETS }}
          echo "DEV_SERVER_URL=${{ secrets.DEV_SERVER_URL_FROM_REPOSITORY_SECRETS }}"

这篇关于无法访问环境机密变量,将其从GH页传递到ReactApp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆