javascript - Expo - React Native - Metro 配置文件

标签 javascript react-native mobile expo

我正在使用 React Native 和 Expo CLI 构建应用程序。一旦应用程序构建并在试飞中进行测试,我就会遇到缺少 Assets 的问题。我收到以下错误。我已经阅读了关于 react native 和 expo 的文档,但我似乎无法弄清楚问题所在。还附上了我的 app.json 和 metro.config.js 文件。

It looks like that you are using a custom metro.config.js that does not extend @expo/metro-config.
This can result in unexpected and hard to debug issues, like missing assets in the production bundle.
We recommend you to abort, fix the metro.config.js, and try again.

应用程序.json

{
  "expo": {
    "name": "Unfiltered",
    "slug": "unfiltered-with-kiran",
    "version": "1.0.5",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true,
      "bundleIdentifier": "blahblahblah",
      "buildNumber": "1"
    },
    "android": {
      "versionCode": 2,
      "adaptiveIcon": {
        "foregroundImage": "./assets/adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      },
      "package": "blahblahblah"
    },
    "web": {
      "favicon": "./assets/favicon.png"
    }
  }
}

metro.config.js

const { getDefaultConfig } = require('expo/metro-config');
module.exports = (async () => {
    const {
        resolver: { sourceExts, assetExts },
    } = await getDefaultConfig(__dirname);
    return {
        resolver: {
            assetExts: [
                ...assetExts,
                'png',
                'jpg',
                'jpeg',
                'gif',
                'svg',
                'ttf',
                'otf',
                'woff',
                'woff2',
            ],
            sourceExts: [
                ...sourceExts,
                'cjs',
                'jsx',
                'ts',
                'tsx',
                'mjs',
                'md',
                'mdx',
            ],
        },
    };
})();

最佳答案

我终于找到了答案,我必须添加 transformer 和 assetPlugins。

 transformer: {
      assetPlugins: ['expo-asset/tools/hashAssetFiles'],
    },

关于javascript - Expo - React Native - Metro 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72469850/

相关文章:

javascript - CSS 未应用于打印

javascript - 如何使用ajax分页获取数据?

java - Android React Native ReactRootView 应该使用 Activity 还是 Application context?

react-native - 如何在焦点 react 导航中更改 TabBar 标签的字体大小?

javascript - Mobile Safari - JavaScript 单击事件中断复制和粘贴

javascript - node.js/javascript -- 嵌套回调

javascript - .Net Select/Select2 knockout javascript - 如果初始值不在下拉列表中,则无法加载初始值

react-native - React Native Picker 可以在某些项目之间有某种分隔符或分隔符吗?

css - 移动设备上的横向滚动

mobile - 我可以使用手机信号塔的信息在没有 GPS 服务的 j2me 中获取移动设备的位置吗