从react-navigation迁移至expo-router时遇require.context参数错误
解决Lerna Monorepo中Expo Router的process.env.EXPO_ROUTER_APP_ROOT无效问题
针对你在Lerna Monorepo迁移到Expo Router时遇到的require.context参数错误,尝试以下几个针对性方案:
显式指定EXPO_ROUTER_APP_ROOT环境变量
在项目的启动脚本或环境变量文件中直接声明路由根目录,避免自动解析出错:- 修改package.json的start脚本:
"scripts": { "start": "EXPO_ROUTER_APP_ROOT=./src/app expo start" } - 或者在项目根目录创建
.env文件,添加:EXPO_ROUTER_APP_ROOT=./src/app
- 修改package.json的start脚本:
配置Expo Router的根目录
在app.json或app.config.js中明确指定路由根路径,覆盖自动检测:{ "expo": { "router": { "root": "./src/app" } } }同时确保项目入口文件
index.js仅保留expo-router/entry的导入,不要手动编写require.context相关代码:import 'expo-router/entry';修复Monorepo的Babel路径解析
安装babel-plugin-module-resolver并配置Babel,确保路径解析正确:- 安装依赖:
npm install babel-plugin-module-resolver --save-dev - 修改
babel.config.js:module.exports = function (api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: [ [ 'module-resolver', { root: ['./'], alias: { '@your-package': './src' // 替换为你的包名 } } ] ] }; };
- 安装依赖:
清理缓存并重新构建
彻底清理缓存和依赖,避免旧配置干扰:# 清理Expo缓存 npx expo start --clear # 清理依赖并重新安装 rm -rf node_modules package-lock.json npm install
内容的提问来源于stack exchange,提问作者NicoleZ
相关产品推荐
相关产品推荐

