Why does Jest
fail with \"Unexpected token *\" on a simple import statement...
Admin@Admin-PC MINGW32 /d/project (master)
$ npm
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.
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, as described in another post) needs further work, and we should Mock
modules with such native requirements...
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: 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 (the (?!...)
, negative look-ahead), we do tell Jest
to exclude anything in node_modules
directory, except the names that we did specify.