haoqunjiang / vite-jest

First-class Vite integration for Jest
MIT License
406 stars 51 forks source link

react ts app `yarn test:unit` fails with `SyntaxError: Cannot use import statement outside a module` #17

Open pnwcoder2020 opened 3 years ago

pnwcoder2020 commented 3 years ago

Thank you for your work on this package and apologies in advance if this issue is the result of user error.

I see the following error in the example react-app-ts and also when incorporating vite-jest into my own react app.

/code/vite-jest/examples/react-app-ts/node_modules/vite-jest/bin/vite-jest.js:3
import fs from 'fs'
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Module._compile (internal/modules/cjs/loader.js:895:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
    at internal/main/run_main_module.js:17:11
mason-smith commented 3 years ago

I am getting a very similar issue specifically when testing React components following the same example. In this case, react-hook-form seems to be the offender.

Screen Shot 2021-08-27 at 10 11 29 AM

I can post more details if that is helpful

Maybe more related to #11 though now that I read through it

Edit: for clarification this is using npm v7.19.0

mijamo commented 3 years ago

I think this is a Yarn 2 specific problem, and to be more specific this is because Yarn 2 cannot currently run ES Modules.

See https://github.com/yarnpkg/berry/issues/638

When I try to run the example with pnpm it works, but not using yarn

mason-smith commented 3 years ago

@mijamo The error in my screenshot was with npm v7.19.0. I have not tried pnpm, although I did observe the same issue with Yarn 2 as you indicated as well.