Files
life-echo/app-expo/metro.config.js

33 lines
1.1 KiB
JavaScript

const { getDefaultConfig } = require('expo/metro-config');
const { withNativeWind } = require('nativewind/metro');
const config = getDefaultConfig(__dirname);
// --- Web: Required for expo-sqlite ---
// expo-sqlite on web uses SQLite compiled to WASM; Metro must treat .wasm as an asset.
if (!config.resolver.assetExts.includes('wasm')) {
config.resolver.assetExts.push('wasm');
}
// --- Web: Required for expo-sqlite ---
// SharedArrayBuffer (used by SQLite WASM) requires COEP/COOP headers.
// Dev server: set here. Production: set via app.config.js expo-router headers.
config.server = config.server ?? {};
const existingEnhanceMiddleware = config.server.enhanceMiddleware;
config.server.enhanceMiddleware = (middleware, server) => {
const nextMiddleware = existingEnhanceMiddleware
? existingEnhanceMiddleware(middleware, server)
: middleware;
return (req, res, next) => {
res.setHeader('Cross-Origin-Embedder-Policy', 'credentialless');
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
return nextMiddleware(req, res, next);
};
};
module.exports = withNativeWind(config, {
input: './src/global.css',
inlineRem: 16,
});