Jest fails with “Unexpected token *” on import statement

Some react-native libraries ship uncompiled ES6 code.

ES6 code needs to be compiled before it can be run by Jest.

The Jest doc about Testing React Native Apps includes a section about compiling dependencies that don’t ship pre-compiled code.

You will need to tell Jest to compile react-navigation-tabs by whitelisting it in the transformIgnorePatterns option in your Jest config.

Example:

Changing the jest.config.js file into something like below, fixed the issue mentioned in OP.

But the react-native-reanimated module (which requires native integration) needs further work, and we should “Mock” modules with such native requirements (as described in another post).

module.exports = {
  preset: 'react-native',
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  transformIgnorePatterns: [
    "node_modules/(?!(react-native"
      + "|react-navigation-tabs"
      + "|react-native-splash-screen"
      + "|react-native-screens"
      + "|react-native-reanimated"
    + ")/)",
  ],
}

Note that the transformIgnorePatterns option (which is an array of Regular-Expressions) is originally meant to exclude files from being compiled, but using (?!(some-dir-name|another-name)) pattern, with the “(?!...)” negative look-ahead, we do tell Jest to exclude anything in node_modules directory, except the names that we did specify.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)