Jest fails with “Unexpected token *” on import statement

前端 未结 5 646
南旧
南旧 2021-02-03 18:15

Why does Jest fail with \"Unexpected token *\" on a simple import statement...

Error log:

Admin@Admin-PC MINGW32 /d/project (master)
$ npm         


        
5条回答
  •  暗喜
    暗喜 (楼主)
    2021-02-03 18:46

    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, 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.

提交回复
热议问题