ERROR node_modules/expo-router/_ctx.android.js:Invalid call at line 2: process.env.EXPO_ROUTER_APP_ROOT
< /code>
Первый аргумент require.context должен быть строкой, обозначающей каталог, который требует. import { registerRootComponent } from 'expo';
import { ExpoRoot } from 'expo-router';
export function App() {
const ctx = require.context('./app');
return ;
}
try {
registerRootComponent(App);
} catch (e) {
console.error("App registry failed:", e);
}
< /code>
После этого исходная проблема была решена, и Android успешно связан. Однако, когда я попытался открыть приложение, появились следующие проблемы < /p>
ERROR ExceptionsManager should be set up after React DevTools to avoid console.error arguments mutation
ERROR TypeError: property is not writable, js engine: hermes
ERROR TypeError: Cannot read property 'default' of undefined, js engine: hermes
ERROR TypeError: property is not writable, js engine: hermes
ERROR TypeError: Cannot read property 'default' of undefined, js engine: hermes
< /code>
Ниже приведен мой babel.config.js < /p>
module.exports = function (api) {
api.cache(true);
process.env.EXPO_ROUTER_APP_ROOT = "./app";
return {
presets: ['babel-preset-expo'],
plugins: ['expo-router/babel'],
};
};
< /code>
metro.config.cjs < /p>
enter code hereconst { getDefaultConfig } = require('@expo/metro-config');
const path = require('path');
const projectRoot = __dirname;
const monorepoRoot = path.resolve(projectRoot, '../..');
//
const monorepoPackages = {
'@trungthao/domain': path.resolve(monorepoRoot, 'Packages/Domain'),
};
//
const config = getDefaultConfig(projectRoot);
//
config.watchFolders = [projectRoot, ...Object.values(monorepoPackages)];
//
config.resolver.extraNodeModules = new Proxy({}, {
get: (_, name) =>
name in monorepoPackages
? monorepoPackages[name]
: path.join(monorepoRoot, 'node_modules', name),
});
//
config.resolver.nodeModulesPaths = [
path.resolve(projectRoot, 'node_modules'),
path.resolve(monorepoRoot, 'node_modules'),
];
//
config.entryFile = 'index.tsx';
module.exports = config;
< /code>
и my package.json: < /p>
{
"name": "mobileapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"build": "expo export",
"test": "jest",
"eas-build-post-install": "cd ../../Packages/Domain && npm install && npm run build"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"@expo/metro-config": "^0.20.15",
"@expo/vector-icons": "^14.1.0",
"@gorhom/bottom-sheet": "^5.1.4",
"@ptomasroos/react-native-multi-slider": "^2.2.2",
"@react-native-async-storage/async-storage": "2.1.2",
"@react-native-community/datetimepicker": "^8.4.1",
"@react-navigation/bottom-tabs": "^7.2.0",
"@react-navigation/native": "^7.0.14",
"@reduxjs/toolkit": "^2.7.0",
"@trungthao/domain": "*",
"bcryptjs": "^3.0.2",
"cors": "^2.8.5",
"dotenv": "^16.4.1",
"expo": "53.0.13",
"expo-blur": "~14.1.5",
"expo-constants": "~17.1.6",
"expo-dev-client": "~5.2.2",
"expo-device": "~7.1.4",
"expo-document-picker": "~13.1.6",
"expo-file-system": "^18.1.10",
"expo-font": "~13.3.1",
"expo-haptics": "~14.1.4",
"expo-image": "~2.2.1",
"expo-image-manipulator": "^13.1.7",
"expo-image-picker": "^16.1.4",
"expo-linear-gradient": "~14.1.5",
"expo-linking": "~7.1.4",
"expo-media-library": "^17.1.7",
"expo-notifications": "~0.31.3",
"expo-router": "~5.1.1",
"expo-screen-orientation": "~8.1.7",
"expo-splash-screen": "~0.30.9",
"expo-status-bar": "~2.2.3",
"expo-symbols": "~0.4.5",
"expo-system-ui": "~5.0.9",
"expo-web-browser": "~14.2.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-native": "0.79.4",
"react-native-gesture-handler": "~2.24.0",
"react-native-reanimated": "~3.17.4",
"react-native-reanimated-color-picker": "^0.0.11",
"react-native-safe-area-context": "^5.4.0",
"react-native-screens": "~4.11.1",
"react-native-status-bar-height": "^2.6.0",
"react-native-svg": "15.11.2",
"react-native-web": "^0.20.0",
"react-native-webview": "13.13.5",
"react-native-wheel-color-picker": "^1.3.1",
"react-redux": "^9.2.0",
"reanimated-color-picker": "^4.0.1"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@types/react": "~19.0.10",
"@types/react-native": "^0.72.8",
"@types/react-test-renderer": "^19.0.0",
"babel-plugin-module-resolver": "^5.0.2",
"jest": "^29.2.1",
"jest-expo": "~53.0.7",
"react-test-renderer": "19.0.0",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.8.3"
},
"expo": {
"plugins": [
"expo-router"
]
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... r-cannot-r