dan*_*789 5 android build ios react-native expo
我正在尝试开发一个应用程序,但在添加 dotenv 后无法构建它。
在我的app.config.js我有
import "dotenv/config";
const API_URL = process.env["API_URL"] || "";
const API_VERSION = process.env["API_VERSION"] || "";
const MIRAGE_ENABLED = process.env["MIRAGE_ENABLED"] === "true" ? true : false;
const NODE_ENV = process.env["NODE_ENV"];
export default {
name: "My Application",
version: "0.0.0",
extra: {
API_URL,
API_VERSION,
MIRAGE_ENABLED,
NODE_ENV,
},
};
Run Code Online (Sandbox Code Playgroud)
在我的app.json我有:
{
"expo": {
"name": "my-application",
"slug": "my-application",
"owner": "my-expo",
"privacy": "unlisted",
"version": "0.0.0",
"orientation": "landscape",
"icon": "./assets/images/icon.png",
"sdkVersion": "37.0.0",
"platforms": ["ios"],
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": ["**/*"],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "io.company.my-application",
"buildNumber": "0.0.0"
}
}
}
Run Code Online (Sandbox Code Playgroud)
读完文档后我比以前更困惑了。的输出expo build是:
Failed to read config at: .../app.config.js
ConfigError: Failed to read config at: .../app.config.js
at Object.getDynamicConfig (/Users/me/.npm-global/lib/node_modules/expo-cli/node_modules/@expo/config/src/getConfig.ts:37:9)
at getConfig (/Users/me/.npm-global/lib/node_modules/expo-cli/node_modules/@expo/config/src/Config.ts:121:62)
at validateAsync (/@expo/xdl@58.0.12/src/project/Doctor.ts:438:24)
at Object.validateWithoutNetworkAsync (/@expo/xdl@58.0.12/src/project/Doctor.ts:419:10)
at /Users/me/.npm-global/lib/node_modules/expo-cli/src/exp.ts:644:35
at Command.<anonymous> (/Users/me/.npm-global/lib/node_modules/expo-cli/src/exp.ts:331:7
Run Code Online (Sandbox Code Playgroud)
这根本没有帮助。搜索Failed to read config at: .../app.config.js没有任何结果。
我究竟做错了什么?以这种方式使用 expo 进行配置的最佳实践是什么?任何帮助将不胜感激。
首先,您需要使用 app.config.js 中的环境变量覆盖 app.json。要覆盖 js 对象,您可以使用分隔符运算符,并且要提供“额外”变量,您可以使用额外的键。让我举个例子吧:
import 'dotenv/config'
export default ({config}) => {
const appConfig = ({
...config,
version: process.env.VERSION,
//override anything you want
extra: {
API_URL: process.env.API_URL,
//...
}
});
return appConfig;
}
Run Code Online (Sandbox Code Playgroud)
这会将进程环境变量附加到您的清单中。如果您遇到有关 app.config.js 的任何读取错误,则可能是您没有安装 dotenv 包。让我知道。
| 归档时间: |
|
| 查看次数: |
8845 次 |
| 最近记录: |