很惊讶没有任何答案涉及在Expo中将环境变量存储在.env
文件中。
我更喜欢将我的环境变量存储在.env
文件中,因为我不想将某些变量提交到版本控制并将它们硬编码到我的应用程序代码中。
创建您的.env
文件并添加您的环境变量
安装dotenv
npm install dotenv
在你的app.config.js
文件中,通过dotenv
从.env
文件加载环境变量:
require("dotenv").config();
export default {
}
- 在
app.config.js
配置中,将环境变量暴露给 Expo 运行时:
require("dotenv").config();
export default {
extra: {
ENV_VAR: process.env.ENV_VAR
}
}
现在你可以通过以下方式访问你的环境变量:
import Constants from "expo-constants";
const ENV_VAR = Constants.expoConfig.extra.ENV_VAR
可选项: TypeScript
为了让我们在代码中更方便地使用环境变量,让我们创建一个类型化的辅助工具来访问环境变量:
import Constants from "expo-constants";
export interface Env {
ENV_VAR: string;
}
export const env = Constants.expoConfig?.extra as Env;
然后,您可以直接从env对象访问您的环境变量:
const ENV_VAR = env.ENV_VAR
可选:如果环境变量未设置,则抛出错误
这可以很方便地防止您的应用程序在所需的环境变量未设置时运行,从而使其无法正常运行。
在您的app.config.js
中:
const checkForEnvVariable = (envVar) => {
if (!process.env[envVar]) {
throw Error(`${envVar} not set! Check env.md for more information`);
}
};
[
"ENV_VAR",
].forEach((envVar) => checkForEnvVariable(envVar));
.gitignore
中,并在每次构建时生成它。例如,config.now.js
只包含module.exports = require('./config.staging/index.js')
。 - joeytwiddle