// Learn more https://docs.expo.dev/guides/customizing-metro const { getDefaultConfig } = require("expo/metro-config"); const path = require("path"); /** @type {import('expo/metro-config').MetroConfig} */ const config = getDefaultConfig(__dirname); config.resolver.unstable_enablePackageExports = false; // Block pnpm cache directories from being watched (not the monorepo .pnpm) config.resolver.blockList = [ // Exclude pnpm global cache/store /\/\.pnpm-store\//, // Exclude pnpm dlx cache (the original error) /\/Library\/Caches\/pnpm\/dlx\//, // General cache exclusions /\/node_modules\/.*\/node_modules\/react-native\//, ]; // Add resolver to redirect expo-symbols to web shim on web platform const originalResolveRequest = config.resolver.resolveRequest; config.resolver.resolveRequest = (context, moduleName, platform) => { // On web, redirect expo-symbols to our web shim if (platform === "web" && moduleName === "expo-symbols") { return { type: "sourceFile", filePath: path.resolve(__dirname, "polyfills/expo-symbols.web.ts"), }; } // Use default resolution for other modules if (originalResolveRequest) { return originalResolveRequest(context, moduleName, platform); } return context.resolveRequest(context, moduleName, platform); }; module.exports = config;