Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jest encountered an unexpected token #4267

Open
MaryamAdnan3 opened this issue Feb 13, 2024 · 1 comment
Open

Jest encountered an unexpected token #4267

MaryamAdnan3 opened this issue Feb 13, 2024 · 1 comment

Comments

@MaryamAdnan3
Copy link

MaryamAdnan3 commented Feb 13, 2024

Detail:

I have updated a third party library axios version to 1.6.7 . When I ran tests I started to get the following error
` 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:
https://jestjs.io/docs/en/configuration.html

Details:

D:\gitRepos\apimatic-js-runtime\node_modules\axios\index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import axios from './lib/axios.js';
                                                                                         ^^^^^^

SyntaxError: Cannot use import statement outside a module

> 1 | import { AxiosHeaders, AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios';
    | ^
  2 | import axios from 'axios';
  3 | import isNode from 'detect-node';
  4 | import FormData from 'form-data';

  at Runtime.createScriptFromCode (../../node_modules/jest-runtime/build/index.js:1350:14)
  at Object.<anonymous> (src/httpClient.ts:1:1)`

package.json

  "devDependencies": {
    "@babel/cli": "^7.21.5",
    "@babel/core": "^7.22.1",
    "@babel/preset-env": "^7.18.2",
    "babel-jest": "^26.6.3",
    "@size-limit/preset-small-lib": "^7.0.8",
    "@types/detect-node": "^2.0.0",
    "@types/lodash.flatmap": "^4.5.6",
    "abort-controller": "^3.0.0",
    "babel-plugin-annotate-pure-calls": "^0.4.0",
    "jest": "^26.6.3",
    "jsdom": "^19.0.0",
    "jsdom-global": "^3.0.2",
    "lerna-alias": "3.0.3-0",
    "rollup": "^2.79.0",
    "rollup-plugin-typescript2": "^0.31.0",
    "size-limit": "^7.0.8",
    "ts-jest": "^29.1.2",
    "typescript": "^4.1.2"
  }

jest.config.js
`const { jest: lernaAliases } = require('lerna-alias');

module.exports = {
preset: 'ts-jest',
moduleNameMapper: lernaAliases(),
transform: {
'^.+\.tsx?$': 'ts-jest', // Add TypeScript transformation
'^.+\.jsx?$': 'babel-jest', // Add Babel transformation for ES6 modules
},
coverageReporters: [['lcov', { projectRoot: '../../' }]]
};
`

@ledenakralica
Copy link

I have a similar issue. It seems to me that for some reason ts-jest instructs the typescript compiler to emit ES3/ES5 code. I cannot pinpoint where this is happening though

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants