Expo 应用无法从 Github 操作中看到环境变量
Expo app cannot see env variable from Github action
我们将配置存储在保管库中,在 Github 操作工作流程中,我们提取它并打算在构建期间将其用于应用程序。
这是我们的工作流程
- name: Get app configs from vault
env:
ENVIRONMENT: development
run: |
chmod +x scripts/ci/get-app-configs.sh
scripts/ci/get-app-configs.sh
echo "action_state=yellow" >> $GITHUB_ENV
- name: Set .env to process.env of github actions
uses: cardinalby/export-env-action@v1
with:
envFile: '.env'
expand: 'true'
- name: Generate APK
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
run: |
echo "${{ env.action_state }}"
echo ${{ env.FIREBASE }}
eas build --platform android --local --profile development --non-interactive
Get app configs from vault
步骤创建一个 .env
文件,其内容如下
FIREBASE={firebase_config_string}
然后在 firebase.ts
里面我们这样做。
const firebaseConfig = JSON.parse(process.env.FIREBASE as string) as FirebaseOptions;
该应用在模拟器上测试时运行良好,但在物理设备上测试实际 APK 时,它总是崩溃。在 logcat 我一直看到这个错误 E AndroidRuntime: com.facebook.react.common.JavascriptException: SyntaxError: JSON Parse error: Unexpected identifier "undefined", stack:
.
我已经将它缩小到 firebase.ts
process.env
因为当配置被硬编码时应用程序不会崩溃。
我可以将 env.FIREBASE
视为 Generate APK
步骤中的环境变量,因此它可以正常传递给其他步骤。 echo
也打印出值 fine.
是否无法在构建期间在代码中访问 Github 操作的环境变量?或者还有其他方法可以实现吗?
保持 github 工作流程不变。
已使用 expo-constants
修复。
将 app.json
重命名为 app.config.js
以便能够添加以下行:
import 'dotenv/config';
export default {
expo: {
extra: {
ENV_VAR: process.env.ENV_VAR,
},
},
};
并通过
从应用程序访问所述变量
import Constants from 'expo-constants';
const ENV_VAR = Constants.manifest?.extra?.ENV_VAR
我们将配置存储在保管库中,在 Github 操作工作流程中,我们提取它并打算在构建期间将其用于应用程序。
这是我们的工作流程
- name: Get app configs from vault
env:
ENVIRONMENT: development
run: |
chmod +x scripts/ci/get-app-configs.sh
scripts/ci/get-app-configs.sh
echo "action_state=yellow" >> $GITHUB_ENV
- name: Set .env to process.env of github actions
uses: cardinalby/export-env-action@v1
with:
envFile: '.env'
expand: 'true'
- name: Generate APK
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
run: |
echo "${{ env.action_state }}"
echo ${{ env.FIREBASE }}
eas build --platform android --local --profile development --non-interactive
Get app configs from vault
步骤创建一个 .env
文件,其内容如下
FIREBASE={firebase_config_string}
然后在 firebase.ts
里面我们这样做。
const firebaseConfig = JSON.parse(process.env.FIREBASE as string) as FirebaseOptions;
该应用在模拟器上测试时运行良好,但在物理设备上测试实际 APK 时,它总是崩溃。在 logcat 我一直看到这个错误 E AndroidRuntime: com.facebook.react.common.JavascriptException: SyntaxError: JSON Parse error: Unexpected identifier "undefined", stack:
.
我已经将它缩小到 firebase.ts
process.env
因为当配置被硬编码时应用程序不会崩溃。
我可以将 env.FIREBASE
视为 Generate APK
步骤中的环境变量,因此它可以正常传递给其他步骤。 echo
也打印出值 fine.
是否无法在构建期间在代码中访问 Github 操作的环境变量?或者还有其他方法可以实现吗?
保持 github 工作流程不变。
已使用 expo-constants
修复。
将 app.json
重命名为 app.config.js
以便能够添加以下行:
import 'dotenv/config';
export default {
expo: {
extra: {
ENV_VAR: process.env.ENV_VAR,
},
},
};
并通过
从应用程序访问所述变量import Constants from 'expo-constants';
const ENV_VAR = Constants.manifest?.extra?.ENV_VAR