I'm encountering a challenge with my Expo project.
While attempting to launch my app using yarn start
, I'm running into this error:
Android Bundling failed 449ms
error: node_modules\expo\AppEntry.js: Unexpected token 'export'
This is my App.js:
import React, { useState, useEffect } from "react";
import "react-native-gesture-handler";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import { NavigationContainer, DefaultTheme } from "@react-navigation/native";
import { onAuthStateChanged } from "firebase/auth";
import { auth } from "./config/firebaseConfig";
import { IntroductionAnimationScreen } from "./introduction_animation";
// screens
import {
PlantDetail,
Welcome,
Signup,
Login,
Profile,
ChatBot,
Settings,
ExpertHome,
CourseList,
Cources,
} from "./screens";
// Tab Navigator
import Tabs from "./navigation/tabs";
// Font
import { useFonts } from "expo-font";
const theme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
border: "transparent",
},
};
const Stack = createNativeStackNavigator();
const App = () => {
const [user, setUser] = useState(null);
useEffect(() => {
const unsubscribe = onAuthStateChanged(auth, (authUser) => {
if (authUser) {
// User is signed in
setUser(authUser);
} else {
// User is signed out
setUser(null);
}
});
// Unsubscribe from the listener when the component unmounts
return () => {
unsubscribe();
};
}, []);
const [loaded] = useFonts({
"Roboto-Light": require("./assets/fonts/Roboto-Light.ttf"),
"Roboto-Black": require("./assets/fonts/Roboto-Black.ttf"),
"Roboto-Bold": require("./assets/fonts/Roboto-Bold.ttf"),
"Roboto-Regular": require("./assets/fonts/Roboto-Regular.ttf"),
});
if (!loaded) {
return null;
}
return (
<NavigationContainer theme={theme}>
<Stack.Navigator
screenOptions={{
headerShown: false,
}}
initialRouteName={user ? "HomeTabs" : "Welcome"}
>
{/* Tabs */}
{user ? (
<>
<Stack.Screen name="HomeTabs" component={Tabs} />
<Stack.Screen
name="Profile"
component={Profile}
options={{ headerShown: false }}
/>
<Stack.Screen
name="ChatBot"
component={ChatBot}
options={{ headerShown: false }}
/>
<Stack.Screen
name="ExpertHome"
component={ExpertHome}
options={{ headerShown: false }}
/>
<Stack.Screen
name="CourseList"
component={CourseList}
options={{ headerShown: false }}
/>
<Stack.Screen
name="Cources"
component={Cources}
options={{ headerShown: false }}
/>
<Stack.Screen
name="IntroductionAnimationScreen"
component={IntroductionAnimationScreen}
options={{ headerShown: false }}
/>
<Stack.Screen
name="Settings"
options={{
headerShown: false,
cardStyleInterpolator: ({ current, next, layouts }) => {
return {
cardStyle: {
transform: [
{
translateX: current.progress.interpolate({
inputRange: [0, 1],
outputRange: [layouts.screen.width, 0],
}),
},
],
},
overlayStyle: {
opacity: current.progress.interpolate({
inputRange: [0, 1],
outputRange: [0, 0.5],
}),
},
};
},
}}
component={Settings}
/>
</>
) : (
<>
{/* Screens */}
<Stack.Screen
name="Welcome"
component={Welcome}
options={{ headerShown: false }}
/>
<Stack.Screen
name="Signup"
component={Signup}
options={{ headerShown: false }}
/>
<Stack.Screen
name="Login"
component={Login}
options={{ headerShown: false }}
/>
</>
)}
<Stack.Screen
name="PlantDetail"
component={PlantDetail}
options={{ headerShown: false }}
/>
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;
These are all my dependencies:
"dependencies": {
"@expo/vector-icons": "^13.0.0",
"@expo/webpack-config": "^19.0.0",
"@google-ai/generativelanguage": "^1.1.0",
"@react-native-async-storage/async-storage": "1.18.2",
"@react-navigation/bottom-tabs": "^6.5.8",
"@react-navigation/native": "^6.1.7",
"@react-navigation/native-stack": "^6.9.13",
"axios": "^1.5.0",
"deprecated-react-native-prop-types": "^4.2.1",
"dotenv": "^16.3.1",
"expo": "~49.0.5",
"expo-constants": "~14.4.2",
"expo-font": "~11.4.0",
"expo-image-picker": "~14.3.2",
"expo-linear-gradient": "~12.3.0",
"expo-status-bar": "~1.6.0",
"firebase": "^10.3.1",
"lodash": "^4.17.21",
"nativewind": "^2.0.11",
"postcss": "8.4.23",
"prop-types": "*",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.72.5",
"react-native-gesture-handler": "~2.12.0",
"react-native-gifted-chat": "^2.4.0",
"react-native-heroicons": "^3.2.0",
"react-native-modalize": "^2.1.1",
"react-native-onboarding-swiper": "^1.2.0",
"react-native-pager-view": "6.2.0",
"react-native-progress": "^5.0.0",
"react-native-progress-circle": "^2.1.0",
"react-native-reanimated": "^3.5.4",
"react-native-responsive-screen": "^1.4.2",
"react-native-safe-area-context": "4.6.3",
"react-native-screens": "~3.22.0",
"react-native-splash-screen": "^3.3.0",
"react-native-svg": "13.9.0",
"react-native-tab-view": "^3.5.2",
"react-native-vector-icons": "^10.0.0",
"react-native-web": "~0.19.6"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"tailwindcss": "3.3.2",
"typescript": "^5.1.3"
},
And here's the AppEntry.js
file (if required):
import registerRootComponent from 'expo/build/launch/registerRootComponent';
import App from '../../App';
registerRootComponent(App);
I've attempted the following troubleshooting steps:
- Removing the
node_modules
directory and reinstalling it usingyarn
(ornpm install
). - Reviewing all the dependencies that have any import/export issues.
- Checking the syntax of each screen imported into
App.js
(especially how they are exported).