【问题标题】:Cannot configure expo app properly `Failed to read config at: /app.config.js`无法正确配置 expo 应用程序`无法读取配置:/app.config.js`
【发布时间】:2021-01-20 22:25:32
【问题描述】:

我正在尝试开发一个应用程序,但在添加 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,
  },
};

在我的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"
    }
  }
}

看了documentation之后,我比以前更困惑了。 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

这根本没有帮助。搜索Failed to read config at: .../app.config.js 没有任何结果。

我做错了什么?以这种方式使用 expo 进行配置的最佳实践是什么?任何帮助将不胜感激。

【问题讨论】:

    标签: android ios react-native build expo


    【解决方案1】:

    首先,您需要使用 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;
    }
    

    这会将流程环境变量附加到您的清单中。如果您对 app.config.js 有任何读取错误,则可能是您没有安装 dotenv 包。告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 2021-10-13
      • 1970-01-01
      相关资源
      最近更新 更多