首页 > 解决方案 > Expo React Native 错误:未处理的 JS 异常:清单必须指定 logUrl

问题描述

在使用 expo 发布我的应用程序expo publish或将应用程序推送到 App Store 和 Play Store 时,我在 iOS 和 Android 平台上启动生产应用程序时崩溃并出现错误:

未处理的 JS 异常:清单必须指定 logUrl

由于开发应用程序上没有发生此错误,因此我不知道如何调试它。有没有人遇到同样的问题?您对发生的事情有任何想法,或者您对查找错误的方法有任何想法吗?

只是为了获得更多背景信息,我确实在几个月前将我的应用程序发布到了两家商店,没有任何问题。除了将 Expo SDK 从版本 38 更改为 40 之外,我没有更改清单中的任何内容。这是我当前的清单:

{
  "expo": {
    "name": "My App",
    "slug": "myApp",
    "privacy": "public",
    "platforms": ["ios", "android"],
    "version": "1.0.2",
    "orientation": "portrait",
    "backgroundColor": "#ffffff",
    "primaryColor": "#7198FF",
    "icon": "./assets/android-icon.png",
    "splash": {
      "image": "./assets/Launch_Screen.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": false,
      "bundleIdentifier": "com.company.app",
      "buildNumber": "1"
    },
    "android": {
      "package": "com.company.app",
      "googleServicesFile": "./google-services.json",
      "permissions": [
        "CAMERA",
        "MANAGE_DOCUMENTS",
        "READ_CONTACTS",
        "READ_CALENDAR",
        "WRITE_CALENDAR",
        "READ_EXTERNAL_STORAGE",
        "READ_PHONE_STATE",
        "RECORD_AUDIO",
        "USE_FINGERPRINT",
        "VIBRATE"
      ],
      "versionCode": 21
    },
    "androidNavigationBar": {
      "visible": "sticky-immersive",
      "barStyle": "dark-content",
      "backgroundColor": "#FFFFFF"
    },
    "androidStatusBar": {
      "hidden": false,
      "translucent": true,
      "barStyle": "dark-content",
      "backgroundColor": "#FFFFFF"
    },
    "extra": {
      "firebase": {
        "apiKey": "FIREBASE_KEY",
        "authDomain": "app.firebaseapp.com",
        "databaseURL": "https://app.firebaseio.com",
        "projectId": "app",
        "storageBucket": "app.appspot.com",
        "messagingSenderId": "SENDER_ID",
        "appId": "1:appID",
        "measurementId": "G-ID"
      }
    },
    "web": {
      "config": {
        "firebase": {
          "apiKey": "FIREBASE_KEY",
          "authDomain": "app.firebaseapp.com",
          "databaseURL": "https://app.firebaseio.com",
          "projectId": "app",
          "storageBucket": "app.appspot.com",
          "messagingSenderId": "MESSEGING_ID",
          "appId": "1:APP_ID:web:WEB_ID",
          "measurementId": "G-ID"
        }
      }
    },
    "hooks": {
      "postPublish": [
        {
          "file": "sentry-expo/upload-sourcemaps",
          "config": {
            "organization": "app",
            "project": "app",
            "authToken": "SENTRY_TOKEN"
          }
        }
      ]
    }
  }
}

标签: javascriptandroidiosreact-nativeexpo

解决方案


在阅读了@Oleksii 关于检查是否启用了 Expo CLI 日志记录的评论后Logs.enableExpoCliLogging();,似乎这是导致问题的原因。

只需通过导入import { Logs } from 'expo';然后调用Logs.disableExpoCliLogging();应用程序入口点文件来禁用它们,使其在生产环境中再次运行!

再次感谢@Oleksii!


推荐阅读