我与博览会(世博27.1.1和应对本地0.55.4)一个反应 - 本机应用程序的运行。
我想用一个.env.local文件,我发现的唯一的事情是用巴贝尔 - 插件 - 直列dotenv,但它加载.ENV文件,而不是.env.local文件的内容(我希望它如果文件,否则.ENV存在加载的.env.local内容)。
是否有其他类似的插件,允许吗?
嗨,而不是你可以使用世博会“额外”的配置属性。在世博园下添加app.json比方说myApiKey是这样的:
{
"expo": {
"name": "login-app",
"slug": "login-app",
"privacy": "public",
"sdkVersion": "32.0.0",
"platforms": [
"ios",
"android"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"extra": {
"myApiKey" : "1234"
}
}
}
你可以在你的应用程序的任何地方使用它没有导入任何文件。只是用它是这样的:
Expo.Constants.manifest.extra.myApiKey
我终于找到了一个解决方案:
新增此文件env.js:
import Constants from "expo-constants";
function getEnvVars() {
if (__DEV__) {
return returnEnvVars();
} else {
return new Promise(resolve => {
resolve(Constants.manifest.extra);
});
}
}
async function returnEnvVars() {
return await import("envLocal.js");
}
export default getEnvVars;
然后,你可以把你的ENV变量在文件envLocal.js
这样的:出口的默认{测试:“本地主机”};
在app.json
文件和你的督促变量,就像这样:
{
"expo": {
"extra": {
"test": "prod"
}
}
最后,你可以这样调用:
import getEnvVars from "../environment";
getEnvVars().then(vars => console.log(vars));