1

Hello I changed my code from fetch to axios and when I run my tests I get this problem... Can anyone help me with that ?


SyntaxError: Cannot use import statement outside a module

> 1 | import axios from "axios";

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:
 • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/en/ecmascript-modules for how to enable it.
 • 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:

4 Answers 4

6

For me helped the following jest.config.js setup:

transformIgnorePattern: [
 '<rootDir>/node_modules/(?!axios)/'
]

alongside with

moduleNameMapper: {
  '^axios$': require.resolve('axios'),
}
Sign up to request clarification or add additional context in comments.

1 Comment

just the second code block did the trick for me.
2

This issue occurred after axios update from 0.27.2 to 1.0.0. There is an opened issue, so probably this is going to be fixed soon. Meanwhile they're working on that, you can temporary fix it by setting up transformIgnorePatterns in jest config:

transformIgnorePatterns = ["node_modules/(?!axios)/"]

Comments

1

I tried what Andre suggested but it didn't work for me. After searching the issue comments I tried replacing the test script in my package.json with

"scripts": {
    "test": "react-scripts test --transformIgnorePatterns\"node_modules/(?!axios)/\""
}

and it worked perfectly. Hope this helps! It was a frustrating issue.

Thank you Andre for providing the link to the github issue.

Comments

0

Try: "test": "react-scripts test --transformIgnorePatterns "node_modules/(?!axios)/"",

in package.json

as suggested by Muhammad Abdullah here: https://stackoverflow.com/questions/73958968/cannot-use-import-statement-outside-a-module-with-axios#:~:text=26-,Quick%20fix,-Update%20the%20npm

2 Comments

and one more thing, this error arises when trying to unit test some code that uses axios. If you mock axios everything is gonna be just fine
Please edit to add more info to the answer post itself, instead of putting it into a comment.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.