Jest – SyntaxError: React Navigation – Unexpected token export for [node_modules\react-navigation\src\react-navigation.js:1]

All we need is an easy explanation of the problem, so here it is.

Error Getting for jest:-

The Main Error is from react navigation. Getting error for jest react-natigation node_modules folder.

Error at: node_modules\react-navigation\src\react-navigation.js:1
Error Details: ({“Object.”:function(module,exports,require,__dirname,__filename,global,jest){export * from ‘@react-navigation/core’;

SyntaxError: Unexpected token export

Full Error on console

Test suite failed to run

Jest encountered an unexpected token

This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

Here's what you can do:
 • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
 • If you need a custom transformation specify a "transform" option in your config.
 • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

You'll find more details and examples of these config options in the docs:


({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from '@react-navigation/core';

SyntaxError: Unexpected token export

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
  at Object.<anonymous> (screens/WelcomeScreen.js:287:25)


    "preset": "react-native",
    "collectCoverage": true,
    "moduleDirectories": [
    "transform": {
        "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
    "setupFiles": [
    "transformIgnorePatterns": [
    "coveragePathIgnorePatterns": [


import React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import MainButton from '../components/MainButton';
import { withNavigation } from 'react-navigation'

export const WelcomeScreen = (props) => {
    const goToMainScreen = () => {
        props.navigation.navigate({routeName: 'Main'});

    return (
        <View style={styles.screen}>
            <Text style={styles.title}>Welcome</Text>
            <View style={styles.buttonContainer}>
                <MainButton onPress={goToMainScreen} style={styles.button}>

const styles = StyleSheet.create({
    screen: {
        flex: 1,
        padding: 10,
        alignItems: 'center',
        justifyContent: 'center'
    title: {
        fontFamily: 'lato',
        fontWeight: '100',
        fontSize: 48
    buttonContainer: {
        marginTop: 300,
        borderColor: 'black',
        borderRadius: 25,
        flexDirection: "row"
    button: {
        alignSelf: "center",
        width: "50%"

export default withNavigation(WelcomeScreen);


import React from 'react';
import { shallow } from 'enzyme';
import { WelcomeScreen } from '../WelcomeScreen';
import MainButton from '../../components/MainButton'

describe('WelcomeScreen', () => {
    const navigation = {
        navigate: jest.fn()
    const component = shallow (
        <WelcomeScreen navigation={navigation} />

    it('should render properly', () => {

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

The reason was that react-navigation’s code was not transpiled to a version of Javascript that your jest config can execute.

You can try to change the following line in your jest config:

"transformIgnorePatterns": [

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply